home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / Dylan Related / Mindy / Mindy 1.2 - portable sources / comp / parser.tab.c < prev    next >
Encoding:
Text File  |  1995-03-15  |  103.5 KB  |  2,685 lines  |  [TEXT/ttxt]

  1.  
  2. # line 33 "../../mindy-1.x/comp/parser.y"
  3. #include "../compat/std-c.h"
  4.  
  5. #include "mindycomp.h"
  6. #include "header.h"
  7. #include "parser.h"
  8. #include "lexer.h"
  9. #include "literal.h"
  10. #include "src.h"
  11. #include "sym.h"
  12.  
  13. struct token_list {
  14.     int token;
  15.     struct token_list *next;
  16. } *yacc_recovery_list = NULL;
  17.  
  18. static void yyerror(char *);
  19. static boolean verify_symbol_aux(struct id *id, struct token *against);
  20. static void yacc_recover();
  21. static void push_yacc_recovery(int token);
  22. static void pop_yacc_recoveries(int count);
  23.  
  24. #define verify_symbol(id,sym) if (verify_symbol_aux(id,sym)) YYERROR
  25.  
  26.  
  27. # line 58 "../../mindy-1.x/comp/parser.y"
  28. typedef union  {
  29.     struct _nothing *nothing;
  30.     struct token *token;
  31.     struct body *body;
  32.     struct constituent *constituent;
  33.     struct expr *expr;
  34.     struct bindings *bindings;
  35.     struct param_list *param_list;
  36.     struct param *param;
  37.     struct keyword_param *keyword_param;
  38.     struct id *id;
  39.     struct local_methods *local_methods;
  40.     struct method *method;
  41.     struct binop_series *binop_series;
  42.     struct binop *binop;
  43.     struct literal *literal;
  44.     struct arglist *arglist;
  45.     struct argument *argument;
  46.     struct plist *plist;
  47.     struct return_type_list *return_type_list;
  48.     struct literal_list *literal_list;
  49.     struct block_epilog *block_epilog;
  50.     struct condition_body *condition_body;
  51.     struct incomplete_condition_body *incomplete_condition_body;
  52.     struct condition_clause *condition_clause;
  53.     struct for_header *for_header;
  54.     struct exception_clauses *exception_clauses;
  55.     struct exception_clause *exception_clause;
  56.     struct for_clause *for_clause;
  57.     struct to_part *to_part;
  58.     struct superclass_list *superclass_list;
  59.     struct class_guts *class_guts;
  60.     struct slot_spec *slot_spec;
  61.     struct initarg_spec *initarg_spec;
  62.     boolean bool;
  63.     struct inherited_spec *inherited_spec;
  64.     enum slot_allocation slot_allocation;
  65.     struct gf_suffix *gf_suffix;
  66.     flags_t flags;
  67.     struct else_part *else_part;
  68.  
  69.     struct defnamespace_constituent *defnamespace_constituent;
  70.     struct variable_names *variable_names;
  71.     struct use_clause *use_clause;
  72.     struct use_options *use_options;
  73.     struct use_option *use_option;
  74.     struct import_option *import_option;
  75.     struct renamings *renamings;
  76. } YYSTYPE;
  77. #ifdef __cplusplus
  78. #  include <stdio.h>
  79.    extern "C" {
  80.      extern void yyerror(char *);
  81.      extern int yylex();
  82.    }
  83. #endif    /* __cplusplus */ 
  84. # define HEADER_KEY 257
  85. # define HEADER_VAL 258
  86. # define HEADER_END 259
  87. # define BOGUS 260
  88. # define SYMBOL 261
  89. # define KEYWORD 262
  90. # define SYMBOL_LITERAL 263
  91. # define SHARP_T 264
  92. # define SHARP_F 265
  93. # define STRING 266
  94. # define CHARACTER 267
  95. # define INTEGER 268
  96. # define FLOAT 269
  97. # define BINARY_OPERATOR 270
  98. # define LPAREN 271
  99. # define RPAREN 272
  100. # define COMMA 273
  101. # define DOT 274
  102. # define SEMI 275
  103. # define LBRACKET 276
  104. # define RBRACKET 277
  105. # define LBRACE 278
  106. # define RBRACE 279
  107. # define COLON_COLON 280
  108. # define MINUS 281
  109. # define TILDE 282
  110. # define EQUAL 283
  111. # define EQUAL_EQUAL 284
  112. # define ARROW 285
  113. # define SHARP_PAREN 286
  114. # define SHARP_BRACKET 287
  115. # define NEXT 288
  116. # define REST 289
  117. # define KEY 290
  118. # define ALL_KEYS 291
  119. # define ABOVE 292
  120. # define ABSTRACT 293
  121. # define DBEGIN 294
  122. # define BELOW 295
  123. # define BLOCK 296
  124. # define BY 297
  125. # define CASE 298
  126. # define CLASS 299
  127. # define CLEANUP 300
  128. # define CONCRETE 301
  129. # define CONSTANT 302
  130. # define DEFINE 303
  131. # define ELSE 304
  132. # define ELSEIF 305
  133. # define END 306
  134. # define EXCEPTION 307
  135. # define FINALLY 308
  136. # define FOR 309
  137. # define FREE 310
  138. # define FROM 311
  139. # define GENERIC 312
  140. # define HANDLER 313
  141. # define IF 314
  142. # define IN 315
  143. # define INHERITED 316
  144. # define INSTANCE 317
  145. # define KEYED_BY 318
  146. # define KEYWORD_RESERVED_WORD 319
  147. # define LET 320
  148. # define LOCAL 321
  149. # define METHOD 322
  150. # define OPEN 323
  151. # define OTHERWISE 324
  152. # define PRIMARY 325
  153. # define REQUIRED 326
  154. # define SEAL 327
  155. # define SEALED 328
  156. # define SELECT 329
  157. # define SLOT 330
  158. # define SUBCLASS 331
  159. # define THEN 332
  160. # define TO 333
  161. # define UNLESS 334
  162. # define UNTIL 335
  163. # define VARIABLE 336
  164. # define VIRTUAL 337
  165. # define WHILE 338
  166. # define MODULE 339
  167. # define LIBRARY 340
  168. # define EXPORT 341
  169. # define CREATE 342
  170. # define USE 343
  171. # define ALL 344
  172. # define PREFIX_OPTION 345
  173. # define IMPORT_OPTION 346
  174. # define EXCLUDE_OPTION 347
  175. # define EXPORT_OPTION 348
  176. # define RENAME_OPTION 349
  177. #define yyclearin yychar = -1
  178. #define yyerrok yyerrflag = 0
  179. extern int yychar;
  180. #ifndef YYMAXDEPTH
  181. #define YYMAXDEPTH 150
  182. #endif
  183.  
  184. /* __YYSCLASS defines the scoping/storage class for global objects
  185.  * that are NOT renamed by the -p option.  By default these names
  186.  * are going to be 'static' so that multi-definition errors
  187.  * will not occur with multiple parsers.
  188.  * If you want (unsupported) access to internal names you need
  189.  * to define this to be null so it implies 'extern' scope.
  190.  * This should not be used in conjunction with -p.
  191.  */
  192. #ifndef __YYSCLASS
  193. # define __YYSCLASS static
  194. #endif
  195. YYSTYPE yylval;
  196. __YYSCLASS YYSTYPE yyval;
  197. typedef int yytabelem;
  198. # define YYERRCODE 256
  199.  
  200. # line 1175 "../../mindy-1.x/comp/parser.y"
  201.  
  202.  
  203. static void yyerror(char *msg)
  204. {
  205.     if (yylval.token)
  206.     error(yylval.token->line, "%s at or before `%s'\n",
  207.           msg, yylval.token->chars);
  208.     else
  209.     error(line_count, "%s at end-of-file\n", msg);
  210.     yacc_recover();
  211. }
  212.  
  213. static boolean verify_symbol_aux(struct id *id, struct token *token)
  214. {
  215.     if (token) {
  216.     int line = token->line;
  217.     char *ptr = (char *)token->chars;
  218.  
  219.     if (*ptr == '\\')
  220.         ptr++;
  221.  
  222.     if (strcasecmp((char *)id->symbol->name, ptr)) {
  223.         error(line, "mismatched name, ``%s'' isn't ``%s''",
  224.           token->chars, id->symbol->name);
  225.         free(token);
  226.         return TRUE;
  227.     }
  228.     else
  229.         free(token);
  230.     }
  231.     return FALSE;
  232. }
  233.  
  234. static void yacc_recover()
  235. {
  236.     while (yychar) {
  237.     struct token_list *rlist = yacc_recovery_list;
  238.     while (rlist)
  239.         if (rlist->token == yychar)
  240.         return;
  241.         else
  242.         rlist = rlist->next;
  243.     yychar = yylex();
  244.     }
  245.     yyclearin;
  246. }
  247.  
  248. static void push_yacc_recovery(int token)
  249. {
  250.     struct token_list *newrec;
  251.  
  252.     newrec = malloc(sizeof(*newrec));
  253.     newrec->token = token;
  254.     newrec->next = yacc_recovery_list;
  255.     yacc_recovery_list = newrec;
  256. }
  257.  
  258. static void pop_yacc_recoveries(int count)
  259. {
  260.     for ( ; count-- > 0; )
  261.     yacc_recovery_list = yacc_recovery_list->next;
  262. }
  263.  
  264. struct token *make_token(char *ptr, int len)
  265. {
  266.     struct token *token = malloc(sizeof(struct token) 
  267.                  + len + 1 - sizeof(token->chars));
  268.  
  269.     token->length = len;
  270.     memcpy(token->chars, ptr, len);
  271.     token->line = line_count;
  272.     token->chars[len] = 0;
  273.  
  274.     return token;
  275. }
  276.  
  277. __YYSCLASS yytabelem yyexca[] ={
  278. -1, 1,
  279.     0, -1,
  280.     -2, 0,
  281. -1, 59,
  282.     0, 324,
  283.     300, 324,
  284.     304, 324,
  285.     305, 324,
  286.     306, 324,
  287.     307, 324,
  288.     308, 324,
  289.     -2, 0,
  290. -1, 97,
  291.     306, 9,
  292.     -2, 0,
  293. -1, 158,
  294.     272, 237,
  295.     -2, 245,
  296. -1, 234,
  297.     306, 324,
  298.     -2, 0,
  299. -1, 272,
  300.     306, 9,
  301.     -2, 0,
  302. -1, 295,
  303.     306, 9,
  304.     308, 9,
  305.     -2, 0,
  306. -1, 305,
  307.     306, 9,
  308.     -2, 0,
  309. -1, 306,
  310.     306, 9,
  311.     -2, 0,
  312. -1, 332,
  313.     306, 324,
  314.     -2, 0,
  315. -1, 347,
  316.     306, 114,
  317.     -2, 123,
  318. -1, 349,
  319.     306, 324,
  320.     -2, 0,
  321. -1, 363,
  322.     306, 156,
  323.     319, 167,
  324.     -2, 24,
  325. -1, 394,
  326.     306, 117,
  327.     -2, 124,
  328. -1, 476,
  329.     306, 324,
  330.     319, 167,
  331.     -2, 24,
  332.     };
  333. # define YYNPROD 335
  334. # define YYLAST 926
  335. __YYSCLASS yytabelem yyact[]={
  336.  
  337.     16,   399,   161,   395,   264,   162,   258,   335,   421,   420,
  338.     11,   419,   394,   393,   339,   370,   494,   344,    58,   366,
  339.    311,   164,   150,   313,   165,   126,   289,   247,   317,   191,
  340.    495,   190,    21,   493,    13,    61,    85,   442,   443,   444,
  341.    446,   445,   191,   192,   190,   324,   473,   471,   469,   356,
  342.    466,   352,   357,   521,   484,    17,   515,    73,   483,   353,
  343.     33,    23,    43,    37,    38,    56,    40,    41,    42,    62,
  344.     35,   512,    63,    64,   509,   405,   396,    92,    92,    69,
  345.     29,    30,   424,   138,   138,    44,    45,   401,   402,   175,
  346.    355,   474,   425,    47,   106,    48,   497,    49,   467,   492,
  347.    168,   169,    18,   176,   177,   178,   179,   464,    51,   373,
  348.     23,   461,   455,    50,   416,   139,   139,   415,   414,    19,
  349.     20,    46,   156,   166,   198,   199,   373,    23,    52,   160,
  350.    269,    69,   261,    53,    54,   255,   242,    55,   230,   488,
  351.    209,    68,   228,   148,    24,    25,    26,    27,    28,   457,
  352.    517,   501,   286,   171,   249,    33,   172,    43,    37,    38,
  353.     56,    40,    41,    42,   245,    35,   314,   315,   243,   158,
  354.    159,   244,   239,   240,   340,    29,    30,    23,    92,    92,
  355.     44,    45,   281,    66,   336,   565,   233,   340,    47,    23,
  356.     48,   227,    49,    24,    25,    26,    27,    28,   263,   260,
  357.    223,   564,   337,    51,   548,   544,   342,   232,    50,   138,
  358.     24,    25,    26,    27,    28,   337,    46,    23,   277,   278,
  359.    128,   158,   159,    52,   340,    69,   266,   217,    53,    54,
  360.    224,   218,    55,   272,   287,   291,   553,   168,   429,   275,
  361.    388,   139,   156,   297,   298,   156,   300,   274,   378,   358,
  362.    303,   267,   450,   128,   308,   152,   197,   273,   124,   288,
  363.     24,    25,    26,    27,    28,   547,   152,   535,   330,   290,
  364.    292,   546,    24,    25,    26,    27,    28,   310,    76,   346,
  365.    312,   386,   155,   128,   158,   159,   236,   347,   542,    77,
  366.    333,    78,    79,    22,   128,   314,   315,   350,   235,   329,
  367.     24,    25,    26,    27,    28,   345,   322,   360,   533,   348,
  368.    259,   129,   545,   496,   346,   227,   495,   207,   147,   476,
  369.    349,   215,   374,    80,    81,   332,   531,   262,   529,   377,
  370.    380,    83,   256,   234,    84,   382,    82,   381,   146,   145,
  371.    266,    59,   363,   364,   383,   543,   389,   372,   367,   433,
  372.    291,   385,   384,   406,   407,   375,   409,   410,   411,   412,
  373.    168,   379,   368,   216,   328,   426,   322,   282,   241,   134,
  374.    428,   221,   219,   208,   397,   201,   398,   112,   434,   447,
  375.    448,   413,   408,   107,   290,   113,   146,   452,   431,   453,
  376.    430,   435,   432,   312,   115,   130,   108,   566,   458,   549,
  377.    451,   541,   334,   536,   462,   454,   109,   111,   465,   114,
  378.    449,   365,   110,   327,    23,    43,    37,    38,    56,    40,
  379.     41,    42,   340,   203,   459,   351,   302,   206,   301,   252,
  380.    251,   250,   486,   463,   460,   361,   362,   475,    44,    45,
  381.    238,   237,   229,   214,   485,   210,   200,   144,   143,   489,
  382.    487,   142,   490,   254,   253,    96,   105,   104,   122,   103,
  383.    504,   506,   505,   498,   510,   499,   372,   513,   123,   503,
  384.    502,    69,   102,   101,   100,    98,   522,   491,    86,   568,
  385.    567,    68,   558,   557,   556,   520,   519,    72,   518,   555,
  386.    524,   538,   163,   528,   525,   523,   340,    24,    25,    26,
  387.     27,    28,   530,   187,   188,   376,    69,   458,   283,   259,
  388.    257,   534,   220,   343,   202,   132,   183,   181,   141,   121,
  389.    119,     9,   537,     8,     5,   189,     3,   539,   540,    57,
  390.     10,   137,   125,    67,   170,   167,   550,   157,    95,   551,
  391.    131,    71,   154,   135,    75,   422,   554,   151,    65,   306,
  392.    305,   304,   559,   561,   563,   560,    90,   562,    89,   359,
  393.     88,   295,   294,    99,    60,    17,   284,    97,    32,   569,
  394.     33,    23,    43,    37,    38,    56,    40,    41,    42,     7,
  395.     35,   526,   527,   532,   438,   441,   440,   439,   437,   436,
  396.     29,    30,   321,   323,   316,    44,    45,   341,   194,   193,
  397.    186,   185,   127,    47,    94,    48,    93,    49,   120,   118,
  398.    116,   117,    18,    91,    91,   400,   427,   477,    51,   133,
  399.    423,   418,   417,    50,   307,   195,   196,   140,   354,    19,
  400.     20,    46,   173,   391,   392,   174,   213,    87,    52,    39,
  401.    390,   338,   271,    53,    54,   265,   136,    55,    74,   387,
  402.    184,   552,   248,    36,    24,    25,    26,    27,    28,    33,
  403.     23,    43,    37,    38,    56,    40,    41,    42,    31,    35,
  404.     34,   205,   204,    70,   153,   371,   225,   222,   149,    29,
  405.     30,   112,   369,   309,    44,    45,   182,   479,   180,   113,
  406.    481,    15,    47,    14,    48,   403,    49,   404,   115,   456,
  407.     12,   231,   211,   212,   516,   478,   472,    51,   246,   127,
  408.    470,   111,    50,   114,    91,    91,   110,   468,   514,   480,
  409.     46,   511,   166,   508,   285,   482,   500,    52,     6,     4,
  410.      2,     1,    53,    54,   268,   127,    55,   226,     0,     0,
  411.    270,     0,     0,    24,    25,    26,    27,    28,    33,    23,
  412.     43,    37,    38,    56,    40,    41,    42,   331,    35,   280,
  413.    318,   319,   279,     0,   276,     0,   325,   326,    29,    30,
  414.      0,     0,   293,    44,    45,   174,   296,     0,   299,     0,
  415.      0,    47,   320,    48,     0,    49,     0,     0,     0,     0,
  416.      0,     0,     0,     0,     0,     0,    51,     0,     0,     0,
  417.      0,    50,     0,     0,     0,     0,     0,     0,     0,    46,
  418.      0,     0,     0,     0,     0,     0,    52,     0,     0,     0,
  419.      0,    53,    54,     0,     0,    55,     0,     0,     0,     0,
  420.      0,     0,    24,    25,    26,    27,    28,   507,    23,    43,
  421.     37,    38,    56,    40,    41,    42,     0,    35,     0,     0,
  422.      0,     0,     0,     0,     0,     0,     0,    29,    30,     0,
  423.      0,     0,    44,    45,     0,     0,     0,     0,     0,     0,
  424.     47,     0,    48,     0,    49,     0,     0,     0,     0,     0,
  425.      0,     0,     0,     0,     0,    51,     0,     0,     0,     0,
  426.     50,     0,     0,     0,     0,     0,     0,     0,    46,     0,
  427.      0,     0,     0,     0,     0,    52,     0,     0,     0,     0,
  428.     53,    54,     0,     0,    55,     0,     0,     0,     0,     0,
  429.      0,    24,    25,    26,    27,    28 };
  430. __YYSCLASS yytabelem yypact[]={
  431.  
  432.    267, -3000, -3000, -3000,   264,   272, -3000,   309, -3000,   271,
  433.  -3000, -3000,    66, -3000, -3000, -3000, -3000, -3000,  -267,  -130,
  434.   -265, -3000,     8, -3000, -3000, -3000, -3000, -3000, -3000,  -106,
  435.   -106,    60, -3000, -3000, -3000,   487, -3000, -3000, -3000,   212,
  436.  -3000, -3000, -3000, -3000,   152,   152,   184, -3000,   204, -3000,
  437.    203,   202,   201,   188,   186,   185, -3000, -3000, -3000,   309,
  438.     84,   210,   210,   259,   258, -3000,   197,   -25,   -36,    31,
  439.    122, -3000,   254, -3000,     8,  -106, -3000, -3000, -3000, -3000,
  440.  -3000, -3000,   487,   487,   257,   179, -3000,   176,   175,    65,
  441.  -3000, -3000, -3000,    41,   113,  -163,    -6,   309,   231,   398,
  442.    487,  -182,   487,   487,   487,   487, -3000,   256,   255,   254,
  443.  -3000, -3000, -3000, -3000, -3000, -3000, -3000, -3000, -3000,  -299,
  444.  -3000,  -312,   -27,   487,   487,   174, -3000,   102,   253,  -106,
  445.   -265, -3000,   184,  -106, -3000,    40,   100, -3000, -3000,   487,
  446.    173, -3000, -3000, -3000, -3000,   152,   152, -3000,  -265,   171,
  447.     90, -3000,   -53,    99, -3000,   251,    98, -3000,   -73, -3000,
  448.   -164, -3000,   170, -3000,  -168, -3000,   -78,    58,    13,   169,
  449.    168,   487,   487,    95,  -147,   -36,  -143,   159,   158,   157,
  450.  -3000,   183, -3000,   182, -3000,  -171,    57, -3000, -3000, -3000,
  451.    249,   248,   248,  -174,    52, -3000, -3000,   487,    67, -3000,
  452.    -32,   -36, -3000, -3000, -3000,  -176, -3000, -3000,   487, -3000,
  453.  -3000, -3000, -3000, -3000,   -28, -3000,    -6,   487,   487,   -69,
  454.  -3000,  -121, -3000,  -109, -3000,    94,   247, -3000, -3000, -3000,
  455.   -146,   309, -3000, -3000,  -201,   309,   487, -3000, -3000, -3000,
  456.  -3000,  -182,   487,   487,   245,   487,   156,   154, -3000,   487,
  457.  -3000, -3000, -3000,   487,     5,  -311,  -299, -3000,    93, -3000,
  458.     93,  -295,  -312, -3000,   141,    91,   -45,   487, -3000,  -265,
  459.  -3000,    50,   309,   -87, -3000,    90, -3000, -3000, -3000, -3000,
  460.  -3000, -3000,   -85,    34,   309, -3000, -3000, -3000, -3000, -3000,
  461.     45,    13, -3000, -3000,   309,   309, -3000,  -281, -3000,  -256,
  462.   -243,   -34, -3000, -3000,   309,   309,   309,    70, -3000,   139,
  463.     75, -3000,    89, -3000,  -135, -3000,   231, -3000, -3000, -3000,
  464.  -3000,    82,   244,   231, -3000, -3000, -3000,   -35,   -45,   487,
  465.  -3000,   231,   309, -3000, -3000, -3000,   -74,   235,    78, -3000,
  466.      1, -3000, -3000, -3000,   -43,   487,  -106,  -231, -3000,  -201,
  467.   -217,  -233,   487,   487,  -143,   487,   487,   487,   487,   398,
  468.   -188,  -189,  -192,  -234,   487,   -47, -3000,     5,  -124, -3000,
  469.  -3000,    76,   231,    -1, -3000,  -308, -3000, -3000,   487,   487,
  470.  -3000, -3000, -3000,   138, -3000,   -37,   487, -3000,   487,   133,
  471.  -3000,  -194, -3000,  -151,  -231, -3000,   163, -3000, -3000,  -195,
  472.  -3000,   309,   162,  -199, -3000,   309, -3000, -3000, -3000, -3000,
  473.  -3000, -3000,  -282,  -208,  -286,  -288,  -292,  -215,    44, -3000,
  474.  -3000, -3000,   388,  -261,  -276, -3000, -3000, -3000, -3000,   161,
  475.     75, -3000, -3000,  -152,    -1, -3000, -3000, -3000, -3000, -3000,
  476.  -3000, -3000,   211,  -245,    38,    35,  -248, -3000, -3000, -3000,
  477.    235, -3000, -3000, -3000, -3000,  -145,  -231,   309, -3000,   309,
  478.    576,  -240, -3000,   487,  -238, -3000,   487,  -273, -3000, -3000,
  479.  -3000, -3000, -3000, -3000,  -149, -3000,  -234,  -277, -3000, -3000,
  480.  -3000, -3000, -3000,   214,   234,    67,   -74, -3000, -3000, -3000,
  481.  -3000, -3000, -3000,   232, -3000,    49,    47, -3000, -3000, -3000,
  482.  -3000, -3000, -3000,  -231, -3000, -3000,    67,   -13, -3000, -3000,
  483.    131, -3000, -3000, -3000, -3000, -3000,   231, -3000, -3000, -3000,
  484.  -3000,   230,    67,    67, -3000,   129,     9,    72,   -80, -3000,
  485.     33, -3000,    -8,   -81,   127,   487,   309, -3000,   -44, -3000,
  486.  -3000,    67, -3000,   228,   223, -3000, -3000,   222,   221,   309,
  487.     67,  -217,    67,   487, -3000,   -84, -3000,  -100, -3000, -3000,
  488.    125, -3000, -3000, -3000,   219,   218,   309, -3000, -3000, -3000 };
  489. __YYSCLASS yytabelem yypgo[]={
  490.  
  491.      0,    32,   737,   731,   730,   729,   728,   726,   724,   723,
  492.    721,   718,   717,   710,   706,   704,   487,    18,   701,     5,
  493.      2,   129,   700,   699,   697,   695,    34,   693,   691,   688,
  494.    686,   548,   532,   683,    19,    20,    23,   682,    15,   678,
  495.    321,   547,   542,   537,   677,   230,   533,    22,   676,   675,
  496.    674,    25,   673,   541,   670,   540,   538,     0,   293,   668,
  497.    653,   652,    27,   651,    14,    17,   649,   648,   544,   543,
  498.    646,   531,     4,   645,   642,     7,   641,   568,   639,   556,
  499.    637,   560,   558,   634,   633,    21,    24,   534,    13,    12,
  500.      3,    26,   535,   632,   628,   624,   622,   621,    11,     9,
  501.    620,     8,   617,   616,   545,   615,     1,   609,   608,   601,
  502.    600,   599,   598,   594,   593,   504,   525,   503,   592,   589,
  503.    588,   587,   586,   585,   584,   583,   582,   581,    16,     6,
  504.    579,   567,   566,   563,   562,   561,   559,   551,   550,   549 };
  505. __YYSCLASS yytabelem yyr1[]={
  506.  
  507.      0,     3,     4,     4,     5,     5,   130,     6,    20,    21,
  508.     21,    22,    22,    26,    26,    26,    26,    27,    27,    27,
  509.     27,    27,    27,    27,   104,   104,   104,   104,   104,   104,
  510.    104,    28,    28,    28,    28,    31,    31,    32,    32,    32,
  511.     46,    46,    52,    52,    53,     1,     1,     1,     1,     1,
  512.      1,    57,    57,    57,    67,    67,    68,    68,    68,    68,
  513.     58,    58,    58,    59,    59,    59,    59,    59,    59,    59,
  514.     59,    69,    69,    70,    70,    71,    71,    77,    77,    77,
  515.     77,    77,    77,    77,    77,    77,    77,    78,    78,    80,
  516.     81,    81,    82,    82,    79,    79,   131,    60,   132,    60,
  517.    133,    60,   134,    60,   135,    60,   136,    60,   137,    60,
  518.    138,    60,   139,    60,    84,    84,    83,    83,    85,    87,
  519.     87,    87,    87,    88,    88,    89,    89,    90,    90,    90,
  520.     86,    86,    86,    86,    91,    91,    91,    92,    92,    93,
  521.     93,    93,    93,    93,    61,    23,    24,   105,   105,    94,
  522.     94,    94,    94,    29,    95,    95,    96,    96,    97,    97,
  523.     97,    97,    97,    97,    98,    99,   100,   100,   101,   102,
  524.    102,   102,   102,   102,   102,    63,    63,    72,    72,    73,
  525.     73,    30,   103,   103,   103,    33,    33,    33,    34,    34,
  526.     34,    35,    35,    35,    36,    36,    37,    37,    38,    38,
  527.     38,    49,    49,    54,    55,    56,    56,    56,    74,    74,
  528.     75,    75,    75,    75,    76,    76,    64,    64,    39,    39,
  529.     39,    40,    40,    40,    47,    47,    47,    41,    41,    41,
  530.     50,    42,    42,    42,    51,    43,    43,    44,    44,    44,
  531.     45,    45,    45,    48,    48,     2,     2,    65,    65,    66,
  532.     66,   107,   113,   113,   109,   109,   109,   110,   110,   110,
  533.    110,   110,   110,   115,   116,   117,   118,   118,   119,   119,
  534.    119,   119,   119,   120,   124,   124,   127,   127,   126,   126,
  535.    126,   126,   121,   123,   123,   122,   122,   125,   125,   128,
  536.    128,   129,   129,   108,   114,   114,   111,   111,   111,   112,
  537.    112,   112,   112,     7,     7,     8,     8,     9,     9,    10,
  538.     10,    11,    11,    12,    12,    13,    13,    14,    14,    15,
  539.     15,    16,    16,    17,    17,    18,    18,    19,    19,    62,
  540.     62,   106,   106,    25,    25 };
  541. __YYSCLASS yytabelem yyr2[]={
  542.  
  543.      0,     4,     3,     5,     5,     7,     1,     5,     5,     1,
  544.      3,     3,     7,     3,     3,     3,     3,     9,     7,     9,
  545.      9,     7,     7,     7,     1,     5,     5,     5,     5,     5,
  546.      5,     5,    11,    17,     5,     7,    11,     3,     3,     7,
  547.      3,     7,     3,     7,     5,     2,     2,     2,     2,     2,
  548.      2,     3,     3,     5,     5,     7,     3,     3,     3,     3,
  549.      5,     5,     3,     3,     3,     9,     9,     3,     7,     7,
  550.      3,     1,     3,     3,     7,     3,     5,     3,     3,     3,
  551.      3,     3,     3,     3,     7,     7,     7,     3,     5,     7,
  552.      1,     3,     3,     7,     3,     3,     1,     9,     1,    19,
  553.      1,    11,     1,    19,     1,    19,     1,    19,     1,    17,
  554.      1,    17,     1,    17,     1,     3,     7,     3,     3,     5,
  555.      5,     3,     7,     1,     3,     3,     5,     7,    13,    17,
  556.      7,     5,     7,     7,     5,     7,     7,     7,     7,    11,
  557.     15,     7,    11,    11,     5,     5,     5,     5,    13,     1,
  558.      5,     5,     5,    17,     3,     7,     1,     5,     3,     3,
  559.      3,     7,     7,     7,    13,     9,     3,     1,     9,     1,
  560.      3,     3,     3,     3,     3,     1,     5,     1,     3,     7,
  561.      9,    11,     3,     7,    11,     1,     5,     3,     1,     7,
  562.      5,     3,     7,     3,     5,     3,     1,     3,     3,     7,
  563.      7,     7,     5,     9,    11,    13,    11,    11,     5,     9,
  564.      1,     5,     3,     9,     3,     7,     3,     7,     1,     5,
  565.      3,     1,     7,     5,     3,     7,     7,     3,     7,     3,
  566.      5,     3,     7,     3,     5,     5,     3,     1,     5,     3,
  567.      3,     7,     7,     9,    11,     1,     3,     1,     5,     1,
  568.      5,    11,     1,     3,     1,     2,     5,     3,     3,     3,
  569.      7,     7,     7,     5,     5,     7,     1,     7,     2,     2,
  570.      2,     2,     2,     5,     5,     9,     1,     3,     3,     7,
  571.      7,    11,     5,     5,     5,     7,     9,     7,    11,     5,
  572.      7,     3,     7,    11,     1,     3,     1,     2,     5,     3,
  573.      3,     7,     7,     1,     3,     1,     3,     1,     3,     1,
  574.      3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
  575.      3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
  576.      3,     1,     3,     1,     3 };
  577. __YYSCLASS yytabelem yychk[]={
  578.  
  579.  -3000,    -3,    -4,   259,    -5,   257,    -6,  -130,   259,   257,
  580.    258,   -20,   -22,   -26,   -27,   -28,   -57,   256,   303,   320,
  581.    321,    -1,   -58,   262,   345,   346,   347,   348,   349,   281,
  582.    282,   -59,   -77,   261,   -54,   271,   -60,   264,   265,   -78,
  583.    267,   268,   269,   263,   286,   287,   322,   294,   296,   298,
  584.    314,   309,   329,   334,   335,   338,   266,   258,   -17,   275,
  585.   -104,   302,   336,   339,   340,   -31,   313,   -46,   271,   261,
  586.    -52,   -53,   -16,   322,   -67,   -68,   270,   281,   283,   284,
  587.    -58,   -58,   276,   271,   274,   -57,   266,   -80,   -81,   -82,
  588.    -79,   -77,    -1,   -81,   -82,   -56,   271,  -131,   271,  -133,
  589.    271,   271,   271,   271,   271,   271,   -26,   299,   312,   322,
  590.    328,   323,   293,   301,   325,   310,   -31,   -31,  -107,   261,
  591.   -108,   261,   261,   271,   283,   -32,   -51,   -46,   289,   280,
  592.    273,   -55,   261,   -68,   -58,   -69,   -70,   -71,   -57,    -1,
  593.    -69,   261,   272,   272,   272,   274,   273,   277,   306,   -39,
  594.    -47,   -41,   261,   -50,   -42,   288,   -51,   -43,   290,   291,
  595.    -21,   -20,   -19,   261,   -85,   -86,   324,   -92,   -57,   -57,
  596.    -87,   335,   338,   -93,   -46,   271,   -57,   -57,   -57,   -57,
  597.    -29,   261,   -30,   261,   -55,  -109,  -110,  -117,  -115,  -116,
  598.    343,   341,   342,  -111,  -112,  -117,  -115,   283,   -57,   -57,
  599.    272,   273,   261,   -58,   -53,   -56,   -58,   277,   273,   -57,
  600.    272,   -79,   -79,   -16,   272,   -40,   273,   280,   284,   273,
  601.    261,   273,   -44,   273,   -45,   -48,    -2,    -1,   306,   272,
  602.    306,   -18,   285,   -17,   275,   285,   273,   272,   272,   -57,
  603.    -57,   273,   283,   315,   318,   311,   -32,   -62,   -61,   297,
  604.    272,   272,   272,   271,   271,   306,   275,   261,  -129,   261,
  605.   -129,   306,   275,   -57,   -72,   -73,   273,   283,   -32,   306,
  606.    -71,   -74,   -17,   285,   275,   -47,   -41,   -57,   -57,   -42,
  607.    -43,   291,   273,   261,  -132,    -8,   298,   -20,   -86,   -91,
  608.    -26,   -57,   -26,   -92,  -134,  -135,   -87,   -57,   -57,   -46,
  609.    -57,   272,   272,   -57,  -137,  -138,  -139,   -95,   -57,   -33,
  610.    -47,   -35,   -51,   -36,   290,   291,  -113,   339,  -117,  -115,
  611.   -116,  -118,   273,  -114,   340,  -117,  -115,   272,   273,    -1,
  612.    -57,   -16,   275,   -17,   -21,   -75,   271,   289,   -76,   -64,
  613.    261,   -40,   291,   -45,   -65,   271,   280,   -20,   -17,   275,
  614.    -20,   -21,   332,   315,   -94,   333,   292,   295,   283,  -136,
  615.    -20,   -21,   -21,   272,   273,   272,   -34,   273,   273,   -37,
  616.    -38,   -49,    -1,   261,   -19,   273,   261,   -19,   283,    -1,
  617.    -57,   -19,   -20,   -75,   -64,   273,   280,   -66,   283,   -57,
  618.    -58,   -84,   -83,   -88,   -89,   -90,   307,   -86,   -91,  -106,
  619.   -105,   304,   305,   -25,   -24,   308,   -57,   -57,   -62,   -57,
  620.    -57,   -57,   -57,   -85,   306,   306,   306,   -96,   -97,   -98,
  621.    -99,  -101,  -104,  -100,   316,   326,   -57,  -103,   -72,   285,
  622.    -47,   -35,   -36,   273,   -19,   -65,  -119,  -120,  -124,  -121,
  623.   -122,  -123,   345,   346,   347,   349,   348,   -57,   -57,   272,
  624.    289,   -64,   -57,   -57,   272,   306,   -23,   300,   -90,   261,
  625.    271,   306,   -20,   271,   306,   -20,   332,   306,   -12,   334,
  626.    -13,   335,   -14,   338,   306,   -17,   275,  -102,   317,   299,
  627.    331,   302,   337,   319,   330,   -64,   271,   -34,   291,   -38,
  628.    -65,   266,   344,   278,  -128,   278,   278,   344,  -128,   -64,
  629.     -7,   296,   -88,   -89,   -20,   -20,   -57,   261,    -9,   314,
  630.    -57,   -10,   309,   -57,   -11,   329,   -15,   299,   -98,   -99,
  631.   -101,   330,   262,   261,   -72,   -75,  -127,  -126,   261,   279,
  632.   -129,   279,  -125,   261,   -72,   280,   272,   -19,   261,   -72,
  633.    -72,   272,   279,   273,   285,   279,   279,   273,   285,   272,
  634.    -57,   -20,   -63,   280,   -72,   261,   261,   261,   261,   -20,
  635.    -72,  -106,   -72,   -57,   285,   285,   272,   261,   261,   -20 };
  636. __YYSCLASS yytabelem yydef[]={
  637.  
  638.      0,    -2,     6,     2,     0,     0,     1,     0,     3,     0,
  639.      4,     7,   323,    11,    13,    14,    15,    16,    24,     0,
  640.    321,    51,    52,    45,    46,    47,    48,    49,    50,     0,
  641.      0,    62,    63,    64,    67,     0,    70,    77,    78,    79,
  642.     80,    81,    82,    83,    90,    90,     0,    96,     0,   100,
  643.      0,     0,     0,     0,     0,     0,    87,     5,     8,    -2,
  644.      0,     0,     0,     0,     0,    31,     0,     0,     0,    40,
  645.     34,    42,     0,   322,    53,     0,    56,    57,    58,    59,
  646.     60,    61,    71,    71,     0,     0,    88,     0,     0,    91,
  647.     92,    94,    95,     0,    91,     0,   218,    -2,   327,     0,
  648.      0,     0,     0,     0,     0,     0,    12,     0,     0,     0,
  649.     25,    26,    27,    28,    29,    30,    18,    21,    22,   254,
  650.     23,   296,     0,     0,     0,     0,    37,    38,     0,     0,
  651.    321,    44,     0,     0,    54,     0,    72,    73,    75,    51,
  652.      0,    68,    69,    84,    85,     0,     0,    86,   321,     0,
  653.    221,   220,   224,   227,   229,     0,   231,   233,    -2,   236,
  654.      0,    10,     0,   328,     0,   118,   325,   323,     0,     0,
  655.      0,     0,     0,   121,     0,     0,   329,     0,     0,     0,
  656.     17,     0,    19,     0,    20,     0,   255,   257,   258,   259,
  657.      0,     0,     0,     0,   297,   299,   300,     0,   177,    35,
  658.      0,     0,   234,    41,    43,     0,    55,    65,     0,    76,
  659.     66,    89,    93,   203,   323,   219,     0,     0,     0,     0,
  660.    230,     0,   235,     0,   239,   240,     0,   246,    97,    98,
  661.    305,     0,   326,   131,    -2,     0,     0,   102,   104,   119,
  662.    120,     0,     0,     0,     0,     0,     0,     0,   330,     0,
  663.    108,   110,   112,     0,   185,   252,   256,   266,   263,   291,
  664.    264,   294,   298,    32,     0,   178,     0,     0,    39,   321,
  665.     74,   323,    -2,   210,   324,   221,   223,   225,   226,   228,
  666.    232,   238,   245,   247,     0,   101,   306,   130,   132,   133,
  667.    323,    15,   137,   138,     0,    -2,   122,     0,   141,     0,
  668.    149,     0,   106,   144,     0,    -2,    -2,     0,   154,     0,
  669.    188,   187,   191,   193,   196,   195,   327,   253,   260,   261,
  670.    262,   265,     0,   327,   295,   301,   302,     0,     0,     0,
  671.     36,   327,    -2,   206,   207,   208,   210,     0,   212,   214,
  672.    216,   222,   241,   242,   249,     0,     0,    -2,   134,    -2,
  673.    331,   333,     0,     0,   329,     0,     0,     0,     0,     0,
  674.      0,     0,     0,    -2,     0,   177,   186,     0,     0,   194,
  675.    197,   198,   327,   247,   251,     0,   292,   293,     0,     0,
  676.    179,   204,   205,     0,   211,     0,     0,   243,     0,     0,
  677.    248,     0,   115,     0,    -2,   125,     0,   135,   136,     0,
  678.    332,     0,     0,     0,   334,     0,   139,   142,   143,   150,
  679.    151,   152,     0,     0,   313,   315,   317,     0,   323,   158,
  680.    159,   160,   169,     0,     0,   166,   155,   181,   182,     0,
  681.    188,   190,   192,     0,   247,   202,   267,   268,   269,   270,
  682.    271,   272,     0,     0,     0,     0,     0,    33,   180,   209,
  683.      0,   215,   217,   250,   244,   303,   123,     0,   126,     0,
  684.      0,   307,   147,     0,   309,   146,     0,   311,   109,   314,
  685.    111,   316,   113,   318,   319,   157,    -2,     0,   170,   171,
  686.    172,   173,   174,     0,     0,   177,   210,   189,   199,   200,
  687.    201,   273,   274,   276,   282,     0,     0,   283,   284,   213,
  688.     99,   304,   116,   124,   145,   127,   177,    64,   103,   308,
  689.      0,   105,   310,   140,   107,   312,   327,   320,   161,   162,
  690.    163,     0,   177,   177,   183,     0,     0,   277,   278,   289,
  691.      0,   285,     0,     0,     0,     0,     0,   153,   175,   165,
  692.    168,   177,   275,     0,     0,   290,   286,     0,     0,     0,
  693.    177,   331,   177,     0,   184,   280,   279,     0,   287,   128,
  694.      0,   148,   164,   176,     0,     0,     0,   281,   288,   129 };
  695. typedef struct { char *t_name; int t_val; } yytoktype;
  696. #ifndef YYDEBUG
  697. #    define YYDEBUG    0    /* don't allow debugging */
  698. #endif
  699.  
  700. #if YYDEBUG
  701.  
  702. __YYSCLASS yytoktype yytoks[] =
  703. {
  704.     "HEADER_KEY",    257,
  705.     "HEADER_VAL",    258,
  706.     "HEADER_END",    259,
  707.     "BOGUS",    260,
  708.     "SYMBOL",    261,
  709.     "KEYWORD",    262,
  710.     "SYMBOL_LITERAL",    263,
  711.     "SHARP_T",    264,
  712.     "SHARP_F",    265,
  713.     "STRING",    266,
  714.     "CHARACTER",    267,
  715.     "INTEGER",    268,
  716.     "FLOAT",    269,
  717.     "BINARY_OPERATOR",    270,
  718.     "LPAREN",    271,
  719.     "RPAREN",    272,
  720.     "COMMA",    273,
  721.     "DOT",    274,
  722.     "SEMI",    275,
  723.     "LBRACKET",    276,
  724.     "RBRACKET",    277,
  725.     "LBRACE",    278,
  726.     "RBRACE",    279,
  727.     "COLON_COLON",    280,
  728.     "MINUS",    281,
  729.     "TILDE",    282,
  730.     "EQUAL",    283,
  731.     "EQUAL_EQUAL",    284,
  732.     "ARROW",    285,
  733.     "SHARP_PAREN",    286,
  734.     "SHARP_BRACKET",    287,
  735.     "NEXT",    288,
  736.     "REST",    289,
  737.     "KEY",    290,
  738.     "ALL_KEYS",    291,
  739.     "ABOVE",    292,
  740.     "ABSTRACT",    293,
  741.     "DBEGIN",    294,
  742.     "BELOW",    295,
  743.     "BLOCK",    296,
  744.     "BY",    297,
  745.     "CASE",    298,
  746.     "CLASS",    299,
  747.     "CLEANUP",    300,
  748.     "CONCRETE",    301,
  749.     "CONSTANT",    302,
  750.     "DEFINE",    303,
  751.     "ELSE",    304,
  752.     "ELSEIF",    305,
  753.     "END",    306,
  754.     "EXCEPTION",    307,
  755.     "FINALLY",    308,
  756.     "FOR",    309,
  757.     "FREE",    310,
  758.     "FROM",    311,
  759.     "GENERIC",    312,
  760.     "HANDLER",    313,
  761.     "IF",    314,
  762.     "IN",    315,
  763.     "INHERITED",    316,
  764.     "INSTANCE",    317,
  765.     "KEYED_BY",    318,
  766.     "KEYWORD_RESERVED_WORD",    319,
  767.     "LET",    320,
  768.     "LOCAL",    321,
  769.     "METHOD",    322,
  770.     "OPEN",    323,
  771.     "OTHERWISE",    324,
  772.     "PRIMARY",    325,
  773.     "REQUIRED",    326,
  774.     "SEAL",    327,
  775.     "SEALED",    328,
  776.     "SELECT",    329,
  777.     "SLOT",    330,
  778.     "SUBCLASS",    331,
  779.     "THEN",    332,
  780.     "TO",    333,
  781.     "UNLESS",    334,
  782.     "UNTIL",    335,
  783.     "VARIABLE",    336,
  784.     "VIRTUAL",    337,
  785.     "WHILE",    338,
  786.     "MODULE",    339,
  787.     "LIBRARY",    340,
  788.     "EXPORT",    341,
  789.     "CREATE",    342,
  790.     "USE",    343,
  791.     "ALL",    344,
  792.     "PREFIX_OPTION",    345,
  793.     "IMPORT_OPTION",    346,
  794.     "EXCLUDE_OPTION",    347,
  795.     "EXPORT_OPTION",    348,
  796.     "RENAME_OPTION",    349,
  797.     "-unknown-",    -1    /* ends search */
  798. };
  799.  
  800. __YYSCLASS char * yyreds[] =
  801. {
  802.     "-no such reduction-",
  803.     "dylan_file : dylan_headers dylan_program",
  804.     "dylan_headers : HEADER_END",
  805.     "dylan_headers : header_list HEADER_END",
  806.     "header_list : HEADER_KEY HEADER_VAL",
  807.     "header_list : header_list HEADER_KEY HEADER_VAL",
  808.     "dylan_program : /* empty */",
  809.     "dylan_program : body",
  810.     "body : constituents semi_opt",
  811.     "body_opt : /* empty */",
  812.     "body_opt : body",
  813.     "constituents : constituent",
  814.     "constituents : constituents SEMI constituent",
  815.     "constituent : defining_form",
  816.     "constituent : local_declaration",
  817.     "constituent : expression",
  818.     "constituent : error",
  819.     "defining_form : DEFINE flags CLASS class_definition",
  820.     "defining_form : DEFINE CONSTANT bindings",
  821.     "defining_form : DEFINE flags GENERIC generic_function_definition",
  822.     "defining_form : DEFINE flags METHOD named_method",
  823.     "defining_form : DEFINE VARIABLE bindings",
  824.     "defining_form : DEFINE MODULE module_definition",
  825.     "defining_form : DEFINE LIBRARY library_definition",
  826.     "flags : /* empty */",
  827.     "flags : flags SEALED",
  828.     "flags : flags OPEN",
  829.     "flags : flags ABSTRACT",
  830.     "flags : flags CONCRETE",
  831.     "flags : flags PRIMARY",
  832.     "flags : flags FREE",
  833.     "local_declaration : LET bindings",
  834.     "local_declaration : LET HANDLER SYMBOL EQUAL expression",
  835.     "local_declaration : LET HANDLER LPAREN expression property_list_opt RPAREN EQUAL expression",
  836.     "local_declaration : LOCAL local_methods",
  837.     "bindings : variable EQUAL expression",
  838.     "bindings : LPAREN variables RPAREN EQUAL expression",
  839.     "variables : rest_parameter",
  840.     "variables : variable",
  841.     "variables : variable COMMA variables",
  842.     "variable : SYMBOL",
  843.     "variable : SYMBOL COLON_COLON operand",
  844.     "local_methods : local_method",
  845.     "local_methods : local_methods COMMA local_method",
  846.     "local_method : method_opt named_method",
  847.     "keyword : KEYWORD",
  848.     "keyword : PREFIX_OPTION",
  849.     "keyword : IMPORT_OPTION",
  850.     "keyword : EXCLUDE_OPTION",
  851.     "keyword : EXPORT_OPTION",
  852.     "keyword : RENAME_OPTION",
  853.     "expression : keyword",
  854.     "expression : operand",
  855.     "expression : operand binop_series",
  856.     "binop_series : binop operand",
  857.     "binop_series : binop_series binop operand",
  858.     "binop : BINARY_OPERATOR",
  859.     "binop : MINUS",
  860.     "binop : EQUAL",
  861.     "binop : EQUAL_EQUAL",
  862.     "operand : MINUS operand",
  863.     "operand : TILDE operand",
  864.     "operand : leaf",
  865.     "leaf : constant",
  866.     "leaf : SYMBOL",
  867.     "leaf : leaf LBRACKET arguments_opt RBRACKET",
  868.     "leaf : leaf LPAREN arguments_opt RPAREN",
  869.     "leaf : anonymous_method",
  870.     "leaf : leaf DOT SYMBOL",
  871.     "leaf : LPAREN expression RPAREN",
  872.     "leaf : statement",
  873.     "arguments_opt : /* empty */",
  874.     "arguments_opt : arguments",
  875.     "arguments : argument",
  876.     "arguments : arguments COMMA argument",
  877.     "argument : expression",
  878.     "argument : keyword expression",
  879.     "constant : SHARP_T",
  880.     "constant : SHARP_F",
  881.     "constant : concat_string",
  882.     "constant : CHARACTER",
  883.     "constant : INTEGER",
  884.     "constant : FLOAT",
  885.     "constant : SYMBOL_LITERAL",
  886.     "constant : SHARP_PAREN dotted_list RPAREN",
  887.     "constant : SHARP_PAREN literals_opt RPAREN",
  888.     "constant : SHARP_BRACKET literals_opt RBRACKET",
  889.     "concat_string : STRING",
  890.     "concat_string : concat_string STRING",
  891.     "dotted_list : literals DOT literal",
  892.     "literals_opt : /* empty */",
  893.     "literals_opt : literals",
  894.     "literals : literal",
  895.     "literals : literals COMMA literal",
  896.     "literal : constant",
  897.     "literal : keyword",
  898.     "statement : DBEGIN",
  899.     "statement : DBEGIN body_opt END",
  900.     "statement : BLOCK LPAREN symbol_opt RPAREN",
  901.     "statement : BLOCK LPAREN symbol_opt RPAREN body block_epilog_opt END block_opt",
  902.     "statement : CASE",
  903.     "statement : CASE condition_body END case_opt",
  904.     "statement : IF LPAREN expression RPAREN",
  905.     "statement : IF LPAREN expression RPAREN body else_part_opt END if_opt",
  906.     "statement : FOR LPAREN for_header RPAREN",
  907.     "statement : FOR LPAREN for_header RPAREN body_opt final_part_opt END for_opt",
  908.     "statement : SELECT LPAREN expression by_part_opt RPAREN",
  909.     "statement : SELECT LPAREN expression by_part_opt RPAREN condition_body END select_opt",
  910.     "statement : UNLESS LPAREN expression RPAREN",
  911.     "statement : UNLESS LPAREN expression RPAREN body END unless_opt",
  912.     "statement : UNTIL LPAREN expression RPAREN",
  913.     "statement : UNTIL LPAREN expression RPAREN body_opt END until_opt",
  914.     "statement : WHILE LPAREN expression RPAREN",
  915.     "statement : WHILE LPAREN expression RPAREN body_opt END while_opt",
  916.     "block_epilog_opt : /* empty */",
  917.     "block_epilog_opt : block_epilog",
  918.     "block_epilog : exception_clauses_opt cleanup_part exception_clauses_opt",
  919.     "block_epilog : exception_clauses",
  920.     "condition_body : complete_condition_clauses",
  921.     "for_header : UNTIL expression",
  922.     "for_header : WHILE expression",
  923.     "for_header : for_clause",
  924.     "for_header : for_clause COMMA for_header",
  925.     "exception_clauses_opt : /* empty */",
  926.     "exception_clauses_opt : exception_clauses",
  927.     "exception_clauses : exception_clause",
  928.     "exception_clauses : exception_clauses exception_clause",
  929.     "exception_clause : EXCEPTION SYMBOL body",
  930.     "exception_clause : EXCEPTION LPAREN expression property_list_opt RPAREN body",
  931.     "exception_clause : EXCEPTION LPAREN SYMBOL COLON_COLON expression property_list_opt RPAREN body",
  932.     "complete_condition_clauses : OTHERWISE arrow_opt body",
  933.     "complete_condition_clauses : condition_clause semi_opt",
  934.     "complete_condition_clauses : condition_clause SEMI complete_condition_clauses",
  935.     "complete_condition_clauses : condition_clause SEMI incomplete_condition_clauses",
  936.     "incomplete_condition_clauses : constituent semi_opt",
  937.     "incomplete_condition_clauses : constituent SEMI complete_condition_clauses",
  938.     "incomplete_condition_clauses : constituent SEMI incomplete_condition_clauses",
  939.     "condition_clause : expression ARROW constituent",
  940.     "condition_clause : expression COMMA condition_clause",
  941.     "for_clause : variable EQUAL expression THEN expression",
  942.     "for_clause : LPAREN variables RPAREN EQUAL expression THEN expression",
  943.     "for_clause : variable IN expression",
  944.     "for_clause : variable KEYED_BY variable IN expression",
  945.     "for_clause : variable FROM expression to_part_opt by_part_opt",
  946.     "by_part : BY expression",
  947.     "cleanup_part : CLEANUP body",
  948.     "final_part : FINALLY body",
  949.     "else_part : ELSE body",
  950.     "else_part : ELSEIF LPAREN expression RPAREN body else_part_opt",
  951.     "to_part_opt : /* empty */",
  952.     "to_part_opt : TO expression",
  953.     "to_part_opt : ABOVE expression",
  954.     "to_part_opt : BELOW expression",
  955.     "class_definition : SYMBOL LPAREN superclasses RPAREN class_guts_opt END class_opt symbol_opt",
  956.     "superclasses : expression",
  957.     "superclasses : superclasses COMMA expression",
  958.     "class_guts_opt : /* empty */",
  959.     "class_guts_opt : class_guts semi_opt",
  960.     "class_guts : slot_spec",
  961.     "class_guts : initarg_spec",
  962.     "class_guts : inherited_spec",
  963.     "class_guts : class_guts SEMI slot_spec",
  964.     "class_guts : class_guts SEMI initarg_spec",
  965.     "class_guts : class_guts SEMI inherited_spec",
  966.     "slot_spec : flags allocation SLOT SYMBOL slot_type_opt property_list_opt",
  967.     "initarg_spec : required_opt KEYWORD_RESERVED_WORD KEYWORD property_list_opt",
  968.     "required_opt : REQUIRED",
  969.     "required_opt : /* empty */",
  970.     "inherited_spec : INHERITED SLOT SYMBOL property_list_opt",
  971.     "allocation : /* empty */",
  972.     "allocation : INSTANCE",
  973.     "allocation : CLASS",
  974.     "allocation : SUBCLASS",
  975.     "allocation : CONSTANT",
  976.     "allocation : VIRTUAL",
  977.     "slot_type_opt : /* empty */",
  978.     "slot_type_opt : COLON_COLON expression",
  979.     "property_list_opt : /* empty */",
  980.     "property_list_opt : property_list",
  981.     "property_list : COMMA keyword expression",
  982.     "property_list : property_list COMMA keyword expression",
  983.     "generic_function_definition : SYMBOL LPAREN gf_parameters RPAREN gf_suffix",
  984.     "gf_suffix : property_list_opt",
  985.     "gf_suffix : ARROW return_type_element property_list_opt",
  986.     "gf_suffix : ARROW LPAREN return_type_list RPAREN property_list_opt",
  987.     "gf_parameters : /* empty */",
  988.     "gf_parameters : positional_parameter more_gf_parameters",
  989.     "gf_parameters : gf_rest_parameters",
  990.     "more_gf_parameters : /* empty */",
  991.     "more_gf_parameters : COMMA positional_parameter more_gf_parameters",
  992.     "more_gf_parameters : COMMA gf_rest_parameters",
  993.     "gf_rest_parameters : rest_parameter",
  994.     "gf_rest_parameters : rest_parameter COMMA gf_keyword_parameters_list",
  995.     "gf_rest_parameters : gf_keyword_parameters_list",
  996.     "gf_keyword_parameters_list : KEY gf_keyword_parameters_opt",
  997.     "gf_keyword_parameters_list : ALL_KEYS",
  998.     "gf_keyword_parameters_opt : /* empty */",
  999.     "gf_keyword_parameters_opt : gf_keyword_parameters",
  1000.     "gf_keyword_parameters : gf_keyword_parameter",
  1001.     "gf_keyword_parameters : gf_keyword_parameter COMMA ALL_KEYS",
  1002.     "gf_keyword_parameters : gf_keyword_parameter COMMA gf_keyword_parameters",
  1003.     "gf_keyword_parameter : keyword symbol_opt keyword_parameter_type",
  1004.     "gf_keyword_parameter : SYMBOL keyword_parameter_type",
  1005.     "anonymous_method : METHOD method_description END method_opt",
  1006.     "named_method : SYMBOL method_description END method_opt symbol_opt",
  1007.     "method_description : LPAREN parameters RPAREN return_type SEMI body",
  1008.     "method_description : LPAREN parameters RPAREN return_type semi_opt",
  1009.     "method_description : LPAREN parameters RPAREN semi_opt body_opt",
  1010.     "return_type : ARROW return_type_list",
  1011.     "return_type : ARROW LPAREN return_type_list RPAREN",
  1012.     "return_type_list : /* empty */",
  1013.     "return_type_list : REST return_type_element",
  1014.     "return_type_list : return_type_list_head",
  1015.     "return_type_list : return_type_list_head COMMA REST return_type_element",
  1016.     "return_type_list_head : return_type_element",
  1017.     "return_type_list_head : return_type_list_head COMMA return_type_element",
  1018.     "return_type_element : SYMBOL",
  1019.     "return_type_element : SYMBOL COLON_COLON expression",
  1020.     "parameters : /* empty */",
  1021.     "parameters : positional_parameter more_parameters",
  1022.     "parameters : next_parameters",
  1023.     "more_parameters : /* empty */",
  1024.     "more_parameters : COMMA positional_parameter more_parameters",
  1025.     "more_parameters : COMMA next_parameters",
  1026.     "positional_parameter : SYMBOL",
  1027.     "positional_parameter : SYMBOL COLON_COLON expression",
  1028.     "positional_parameter : SYMBOL EQUAL_EQUAL expression",
  1029.     "next_parameters : next_parameter",
  1030.     "next_parameters : next_parameter COMMA rest_parameters",
  1031.     "next_parameters : rest_parameters",
  1032.     "next_parameter : NEXT SYMBOL",
  1033.     "rest_parameters : rest_parameter",
  1034.     "rest_parameters : rest_parameter COMMA keyword_parameters_list",
  1035.     "rest_parameters : keyword_parameters_list",
  1036.     "rest_parameter : REST SYMBOL",
  1037.     "keyword_parameters_list : KEY keyword_parameters_opt",
  1038.     "keyword_parameters_list : ALL_KEYS",
  1039.     "keyword_parameters_opt : /* empty */",
  1040.     "keyword_parameters_opt : COMMA ALL_KEYS",
  1041.     "keyword_parameters_opt : keyword_parameters",
  1042.     "keyword_parameters : keyword_parameter",
  1043.     "keyword_parameters : keyword_parameter COMMA ALL_KEYS",
  1044.     "keyword_parameters : keyword_parameter COMMA keyword_parameters",
  1045.     "keyword_parameter : keyword_opt SYMBOL keyword_parameter_type keyword_parameter_default",
  1046.     "keyword_parameter : keyword_opt SYMBOL LPAREN expression RPAREN",
  1047.     "keyword_opt : /* empty */",
  1048.     "keyword_opt : keyword",
  1049.     "keyword_parameter_type : /* empty */",
  1050.     "keyword_parameter_type : COLON_COLON operand",
  1051.     "keyword_parameter_default : /* empty */",
  1052.     "keyword_parameter_default : EQUAL expression",
  1053.     "module_definition : SYMBOL module_clauses_opt END module_opt symbol_opt",
  1054.     "module_opt : /* empty */",
  1055.     "module_opt : MODULE",
  1056.     "module_clauses_opt : /* empty */",
  1057.     "module_clauses_opt : module_clauses",
  1058.     "module_clauses_opt : module_clauses SEMI",
  1059.     "module_clauses : use_clause",
  1060.     "module_clauses : export_clause",
  1061.     "module_clauses : create_clause",
  1062.     "module_clauses : module_clauses SEMI use_clause",
  1063.     "module_clauses : module_clauses SEMI export_clause",
  1064.     "module_clauses : module_clauses SEMI create_clause",
  1065.     "export_clause : EXPORT variable_names",
  1066.     "create_clause : CREATE variable_names",
  1067.     "use_clause : USE SYMBOL module_use_options",
  1068.     "module_use_options : /* empty */",
  1069.     "module_use_options : module_use_options COMMA module_use_option",
  1070.     "module_use_option : prefix_option",
  1071.     "module_use_option : import_option",
  1072.     "module_use_option : exclude_option",
  1073.     "module_use_option : rename_option",
  1074.     "module_use_option : export_option",
  1075.     "prefix_option : PREFIX_OPTION STRING",
  1076.     "import_option : IMPORT_OPTION ALL",
  1077.     "import_option : IMPORT_OPTION LBRACE imports_opt RBRACE",
  1078.     "imports_opt : /* empty */",
  1079.     "imports_opt : imports",
  1080.     "imports : SYMBOL",
  1081.     "imports : SYMBOL ARROW SYMBOL",
  1082.     "imports : imports COMMA SYMBOL",
  1083.     "imports : imports COMMA SYMBOL ARROW SYMBOL",
  1084.     "exclude_option : EXCLUDE_OPTION variable_name_set",
  1085.     "export_option : EXPORT_OPTION ALL",
  1086.     "export_option : EXPORT_OPTION variable_name_set",
  1087.     "rename_option : RENAME_OPTION LBRACE RBRACE",
  1088.     "rename_option : RENAME_OPTION LBRACE rename_specs RBRACE",
  1089.     "rename_specs : SYMBOL ARROW SYMBOL",
  1090.     "rename_specs : rename_specs COMMA SYMBOL ARROW SYMBOL",
  1091.     "variable_name_set : LBRACE RBRACE",
  1092.     "variable_name_set : LBRACE variable_names RBRACE",
  1093.     "variable_names : SYMBOL",
  1094.     "variable_names : variable_names COMMA SYMBOL",
  1095.     "library_definition : SYMBOL library_clauses_opt END library_opt symbol_opt",
  1096.     "library_opt : /* empty */",
  1097.     "library_opt : LIBRARY",
  1098.     "library_clauses_opt : /* empty */",
  1099.     "library_clauses_opt : library_clauses",
  1100.     "library_clauses_opt : library_clauses SEMI",
  1101.     "library_clauses : use_clause",
  1102.     "library_clauses : export_clause",
  1103.     "library_clauses : library_clauses SEMI use_clause",
  1104.     "library_clauses : library_clauses SEMI export_clause",
  1105.     "block_opt : /* empty */",
  1106.     "block_opt : BLOCK",
  1107.     "case_opt : /* empty */",
  1108.     "case_opt : CASE",
  1109.     "if_opt : /* empty */",
  1110.     "if_opt : IF",
  1111.     "for_opt : /* empty */",
  1112.     "for_opt : FOR",
  1113.     "select_opt : /* empty */",
  1114.     "select_opt : SELECT",
  1115.     "unless_opt : /* empty */",
  1116.     "unless_opt : UNLESS",
  1117.     "until_opt : /* empty */",
  1118.     "until_opt : UNTIL",
  1119.     "while_opt : /* empty */",
  1120.     "while_opt : WHILE",
  1121.     "class_opt : /* empty */",
  1122.     "class_opt : CLASS",
  1123.     "method_opt : /* empty */",
  1124.     "method_opt : METHOD",
  1125.     "semi_opt : /* empty */",
  1126.     "semi_opt : SEMI",
  1127.     "arrow_opt : /* empty */",
  1128.     "arrow_opt : ARROW",
  1129.     "symbol_opt : /* empty */",
  1130.     "symbol_opt : SYMBOL",
  1131.     "by_part_opt : /* empty */",
  1132.     "by_part_opt : by_part",
  1133.     "else_part_opt : /* empty */",
  1134.     "else_part_opt : else_part",
  1135.     "final_part_opt : /* empty */",
  1136.     "final_part_opt : final_part",
  1137. };
  1138. #endif /* YYDEBUG */
  1139. #define YYFLAG  (-3000)
  1140. /* @(#) $Revision: 70.7 $ */    
  1141.  
  1142. /*
  1143. ** Skeleton parser driver for yacc output
  1144. */
  1145.  
  1146. #if defined(NLS) && !defined(NL_SETN)
  1147. #include <msgbuf.h>
  1148. #endif
  1149.  
  1150. #ifndef nl_msg
  1151. #define nl_msg(i,s) (s)
  1152. #endif
  1153.  
  1154. /*
  1155. ** yacc user known macros and defines
  1156. */
  1157. #define YYERROR        goto yyerrlab
  1158.  
  1159. #ifndef __RUNTIME_YYMAXDEPTH
  1160. #define YYACCEPT    return(0)
  1161. #define YYABORT        return(1)
  1162. #else
  1163. #define YYACCEPT    {free_stacks(); return(0);}
  1164. #define YYABORT        {free_stacks(); return(1);}
  1165. #endif
  1166.  
  1167. #define YYBACKUP( newtoken, newvalue )\
  1168. {\
  1169.     if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  1170.     {\
  1171.         yyerror( (nl_msg(30001,"syntax error - cannot backup")) );\
  1172.         goto yyerrlab;\
  1173.     }\
  1174.     yychar = newtoken;\
  1175.     yystate = *yyps;\
  1176.     yylval = newvalue;\
  1177.     goto yynewstate;\
  1178. }
  1179. #define YYRECOVERING()    (!!yyerrflag)
  1180. #ifndef YYDEBUG
  1181. #    define YYDEBUG    1    /* make debugging available */
  1182. #endif
  1183.  
  1184. /*
  1185. ** user known globals
  1186. */
  1187. int yydebug;            /* set to 1 to get debugging */
  1188.  
  1189. /*
  1190. ** driver internal defines
  1191. */
  1192. /* define for YYFLAG now generated by yacc program. */
  1193. /*#define YYFLAG        (FLAGVAL)*/
  1194.  
  1195. /*
  1196. ** global variables used by the parser
  1197. */
  1198. # ifndef __RUNTIME_YYMAXDEPTH
  1199. __YYSCLASS YYSTYPE yyv[ YYMAXDEPTH ];    /* value stack */
  1200. __YYSCLASS int yys[ YYMAXDEPTH ];        /* state stack */
  1201. # else
  1202. __YYSCLASS YYSTYPE *yyv;            /* pointer to malloc'ed value stack */
  1203. __YYSCLASS int *yys;            /* pointer to malloc'ed stack stack */
  1204.  
  1205. #if defined(__STDC__) || defined (__cplusplus)
  1206. #include <stdlib.h>
  1207. #else
  1208.     extern char *malloc();
  1209.     extern char *realloc();
  1210.     extern void free();
  1211. #endif /* __STDC__ or __cplusplus */
  1212.  
  1213.  
  1214. static int allocate_stacks(); 
  1215. static void free_stacks();
  1216. # ifndef YYINCREMENT
  1217. # define YYINCREMENT (YYMAXDEPTH/2) + 10
  1218. # endif
  1219. # endif    /* __RUNTIME_YYMAXDEPTH */
  1220. long  yymaxdepth = YYMAXDEPTH;
  1221.  
  1222. __YYSCLASS YYSTYPE *yypv;            /* top of value stack */
  1223. __YYSCLASS int *yyps;            /* top of state stack */
  1224.  
  1225. __YYSCLASS int yystate;            /* current state */
  1226. __YYSCLASS int yytmp;            /* extra var (lasts between blocks) */
  1227.  
  1228. int yynerrs;            /* number of errors */
  1229. __YYSCLASS int yyerrflag;            /* error recovery flag */
  1230. int yychar;            /* current input token number */
  1231.  
  1232.  
  1233.  
  1234. /*
  1235. ** yyparse - return 0 if worked, 1 if syntax error not recovered from
  1236. */
  1237. int
  1238. yyparse()
  1239. {
  1240.     register YYSTYPE *yypvt;    /* top of value stack for $vars */
  1241.  
  1242.     /*
  1243.     ** Initialize externals - yyparse may be called more than once
  1244.     */
  1245. # ifdef __RUNTIME_YYMAXDEPTH
  1246.     if (allocate_stacks()) YYABORT;
  1247. # endif
  1248.     yypv = &yyv[-1];
  1249.     yyps = &yys[-1];
  1250.     yystate = 0;
  1251.     yytmp = 0;
  1252.     yynerrs = 0;
  1253.     yyerrflag = 0;
  1254.     yychar = -1;
  1255.  
  1256.     goto yystack;
  1257.     {
  1258.         register YYSTYPE *yy_pv;    /* top of value stack */
  1259.         register int *yy_ps;        /* top of state stack */
  1260.         register int yy_state;        /* current state */
  1261.         register int  yy_n;        /* internal state number info */
  1262.  
  1263.         /*
  1264.         ** get globals into registers.
  1265.         ** branch to here only if YYBACKUP was called.
  1266.         */
  1267.     yynewstate:
  1268.         yy_pv = yypv;
  1269.         yy_ps = yyps;
  1270.         yy_state = yystate;
  1271.         goto yy_newstate;
  1272.  
  1273.         /*
  1274.         ** get globals into registers.
  1275.         ** either we just started, or we just finished a reduction
  1276.         */
  1277.     yystack:
  1278.         yy_pv = yypv;
  1279.         yy_ps = yyps;
  1280.         yy_state = yystate;
  1281.  
  1282.         /*
  1283.         ** top of for (;;) loop while no reductions done
  1284.         */
  1285.     yy_stack:
  1286.         /*
  1287.         ** put a state and value onto the stacks
  1288.         */
  1289. #if YYDEBUG
  1290.         /*
  1291.         ** if debugging, look up token value in list of value vs.
  1292.         ** name pairs.  0 and negative (-1) are special values.
  1293.         ** Note: linear search is used since time is not a real
  1294.         ** consideration while debugging.
  1295.         */
  1296.         if ( yydebug )
  1297.         {
  1298.             register int yy_i;
  1299.  
  1300.             printf( "State %d, token ", yy_state );
  1301.             if ( yychar == 0 )
  1302.                 printf( "end-of-file\n" );
  1303.             else if ( yychar < 0 )
  1304.                 printf( "-none-\n" );
  1305.             else
  1306.             {
  1307.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1308.                     yy_i++ )
  1309.                 {
  1310.                     if ( yytoks[yy_i].t_val == yychar )
  1311.                         break;
  1312.                 }
  1313.                 printf( "%s\n", yytoks[yy_i].t_name );
  1314.             }
  1315.         }
  1316. #endif /* YYDEBUG */
  1317.         if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
  1318.         {
  1319. # ifndef __RUNTIME_YYMAXDEPTH
  1320.             yyerror( (nl_msg(30002,"yacc stack overflow")) );
  1321.             YYABORT;
  1322. # else
  1323.             /* save old stack bases to recalculate pointers */
  1324.             YYSTYPE * yyv_old = yyv;
  1325.             int * yys_old = yys;
  1326.             yymaxdepth += YYINCREMENT;
  1327.             yys = (int *) realloc(yys, yymaxdepth * sizeof(int));
  1328.             yyv = (YYSTYPE *) realloc(yyv, yymaxdepth * sizeof(YYSTYPE));
  1329.             if (yys==0 || yyv==0) {
  1330.                 yyerror( (nl_msg(30002,"yacc stack overflow")) );
  1331.                 YYABORT;
  1332.                 }
  1333.             /* Reset pointers into stack */
  1334.             yy_ps = (yy_ps - yys_old) + yys;
  1335.             yyps = (yyps - yys_old) + yys;
  1336.             yy_pv = (yy_pv - yyv_old) + yyv;
  1337.             yypv = (yypv - yyv_old) + yyv;
  1338. # endif
  1339.  
  1340.         }
  1341.         *yy_ps = yy_state;
  1342.         *++yy_pv = yyval;
  1343.  
  1344.         /*
  1345.         ** we have a new state - find out what to do
  1346.         */
  1347.     yy_newstate:
  1348.         if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  1349.             goto yydefault;        /* simple state */
  1350. #if YYDEBUG
  1351.         /*
  1352.         ** if debugging, need to mark whether new token grabbed
  1353.         */
  1354.         yytmp = yychar < 0;
  1355. #endif
  1356.         if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1357.             yychar = 0;        /* reached EOF */
  1358. #if YYDEBUG
  1359.         if ( yydebug && yytmp )
  1360.         {
  1361.             register int yy_i;
  1362.  
  1363.             printf( "Received token " );
  1364.             if ( yychar == 0 )
  1365.                 printf( "end-of-file\n" );
  1366.             else if ( yychar < 0 )
  1367.                 printf( "-none-\n" );
  1368.             else
  1369.             {
  1370.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1371.                     yy_i++ )
  1372.                 {
  1373.                     if ( yytoks[yy_i].t_val == yychar )
  1374.                         break;
  1375.                 }
  1376.                 printf( "%s\n", yytoks[yy_i].t_name );
  1377.             }
  1378.         }
  1379. #endif /* YYDEBUG */
  1380.         if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  1381.             goto yydefault;
  1382.         if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )    /*valid shift*/
  1383.         {
  1384.             yychar = -1;
  1385.             yyval = yylval;
  1386.             yy_state = yy_n;
  1387.             if ( yyerrflag > 0 )
  1388.                 yyerrflag--;
  1389.             goto yy_stack;
  1390.         }
  1391.  
  1392.     yydefault:
  1393.         if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  1394.         {
  1395. #if YYDEBUG
  1396.             yytmp = yychar < 0;
  1397. #endif
  1398.             if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1399.                 yychar = 0;        /* reached EOF */
  1400. #if YYDEBUG
  1401.             if ( yydebug && yytmp )
  1402.             {
  1403.                 register int yy_i;
  1404.  
  1405.                 printf( "Received token " );
  1406.                 if ( yychar == 0 )
  1407.                     printf( "end-of-file\n" );
  1408.                 else if ( yychar < 0 )
  1409.                     printf( "-none-\n" );
  1410.                 else
  1411.                 {
  1412.                     for ( yy_i = 0;
  1413.                         yytoks[yy_i].t_val >= 0;
  1414.                         yy_i++ )
  1415.                     {
  1416.                         if ( yytoks[yy_i].t_val
  1417.                             == yychar )
  1418.                         {
  1419.                             break;
  1420.                         }
  1421.                     }
  1422.                     printf( "%s\n", yytoks[yy_i].t_name );
  1423.                 }
  1424.             }
  1425. #endif /* YYDEBUG */
  1426.             /*
  1427.             ** look through exception table
  1428.             */
  1429.             {
  1430.                 register int *yyxi = yyexca;
  1431.  
  1432.                 while ( ( *yyxi != -1 ) ||
  1433.                     ( yyxi[1] != yy_state ) )
  1434.                 {
  1435.                     yyxi += 2;
  1436.                 }
  1437.                 while ( ( *(yyxi += 2) >= 0 ) &&
  1438.                     ( *yyxi != yychar ) )
  1439.                     ;
  1440.                 if ( ( yy_n = yyxi[1] ) < 0 )
  1441.                     YYACCEPT;
  1442.             }
  1443.         }
  1444.  
  1445.         /*
  1446.         ** check for syntax error
  1447.         */
  1448.         if ( yy_n == 0 )    /* have an error */
  1449.         {
  1450.             /* no worry about speed here! */
  1451.             switch ( yyerrflag )
  1452.             {
  1453.             case 0:        /* new error */
  1454.                 yyerror( (nl_msg(30003,"syntax error")) );
  1455.                 yynerrs++;
  1456.                 goto skip_init;
  1457.             yyerrlab:
  1458.                 /*
  1459.                 ** get globals into registers.
  1460.                 ** we have a user generated syntax type error
  1461.                 */
  1462.                 yy_pv = yypv;
  1463.                 yy_ps = yyps;
  1464.                 yy_state = yystate;
  1465.                 yynerrs++;
  1466.             skip_init:
  1467.             case 1:
  1468.             case 2:        /* incompletely recovered error */
  1469.                     /* try again... */
  1470.                 yyerrflag = 3;
  1471.                 /*
  1472.                 ** find state where "error" is a legal
  1473.                 ** shift action
  1474.                 */
  1475.                 while ( yy_ps >= yys )
  1476.                 {
  1477.                     yy_n = yypact[ *yy_ps ] + YYERRCODE;
  1478.                     if ( yy_n >= 0 && yy_n < YYLAST &&
  1479.                         yychk[yyact[yy_n]] == YYERRCODE)                    {
  1480.                         /*
  1481.                         ** simulate shift of "error"
  1482.                         */
  1483.                         yy_state = yyact[ yy_n ];
  1484.                         goto yy_stack;
  1485.                     }
  1486.                     /*
  1487.                     ** current state has no shift on
  1488.                     ** "error", pop stack
  1489.                     */
  1490. #if YYDEBUG
  1491. #    define _POP_ "Error recovery pops state %d, uncovers state %d\n"
  1492.                     if ( yydebug )
  1493.                         printf( _POP_, *yy_ps,
  1494.                             yy_ps[-1] );
  1495. #    undef _POP_
  1496. #endif
  1497.                     yy_ps--;
  1498.                     yy_pv--;
  1499.                 }
  1500.                 /*
  1501.                 ** there is no state on stack with "error" as
  1502.                 ** a valid shift.  give up.
  1503.                 */
  1504.                 YYABORT;
  1505.             case 3:        /* no shift yet; eat a token */
  1506. #if YYDEBUG
  1507.                 /*
  1508.                 ** if debugging, look up token in list of
  1509.                 ** pairs.  0 and negative shouldn't occur,
  1510.                 ** but since timing doesn't matter when
  1511.                 ** debugging, it doesn't hurt to leave the
  1512.                 ** tests here.
  1513.                 */
  1514.                 if ( yydebug )
  1515.                 {
  1516.                     register int yy_i;
  1517.  
  1518.                     printf( "Error recovery discards " );
  1519.                     if ( yychar == 0 )
  1520.                         printf( "token end-of-file\n" );
  1521.                     else if ( yychar < 0 )
  1522.                         printf( "token -none-\n" );
  1523.                     else
  1524.                     {
  1525.                         for ( yy_i = 0;
  1526.                             yytoks[yy_i].t_val >= 0;
  1527.                             yy_i++ )
  1528.                         {
  1529.                             if ( yytoks[yy_i].t_val
  1530.                                 == yychar )
  1531.                             {
  1532.                                 break;
  1533.                             }
  1534.                         }
  1535.                         printf( "token %s\n",
  1536.                             yytoks[yy_i].t_name );
  1537.                     }
  1538.                 }
  1539. #endif /* YYDEBUG */
  1540.                 if ( yychar == 0 )    /* reached EOF. quit */
  1541.                     YYABORT;
  1542.                 yychar = -1;
  1543.                 goto yy_newstate;
  1544.             }
  1545.         }/* end if ( yy_n == 0 ) */
  1546.         /*
  1547.         ** reduction by production yy_n
  1548.         ** put stack tops, etc. so things right after switch
  1549.         */
  1550. #if YYDEBUG
  1551.         /*
  1552.         ** if debugging, print the string that is the user's
  1553.         ** specification of the reduction which is just about
  1554.         ** to be done.
  1555.         */
  1556.         if ( yydebug )
  1557.             printf( "Reduce by (%d) \"%s\"\n",
  1558.                 yy_n, yyreds[ yy_n ] );
  1559. #endif
  1560.         yytmp = yy_n;            /* value to switch over */
  1561.         yypvt = yy_pv;            /* $vars top of value stack */
  1562.         /*
  1563.         ** Look in goto table for next state
  1564.         ** Sorry about using yy_state here as temporary
  1565.         ** register variable, but why not, if it works...
  1566.         ** If yyr2[ yy_n ] doesn't have the low order bit
  1567.         ** set, then there is no action to be done for
  1568.         ** this reduction.  So, no saving & unsaving of
  1569.         ** registers done.  The only difference between the
  1570.         ** code just after the if and the body of the if is
  1571.         ** the goto yy_stack in the body.  This way the test
  1572.         ** can be made before the choice of what to do is needed.
  1573.         */
  1574.         {
  1575.             /* length of production doubled with extra bit */
  1576.             register int yy_len = yyr2[ yy_n ];
  1577.  
  1578.             if ( !( yy_len & 01 ) )
  1579.             {
  1580.                 yy_len >>= 1;
  1581.                 yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1582.                 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1583.                     *( yy_ps -= yy_len ) + 1;
  1584.                 if ( yy_state >= YYLAST ||
  1585.                     yychk[ yy_state =
  1586.                     yyact[ yy_state ] ] != -yy_n )
  1587.                 {
  1588.                     yy_state = yyact[ yypgo[ yy_n ] ];
  1589.                 }
  1590.                 goto yy_stack;
  1591.             }
  1592.             yy_len >>= 1;
  1593.             yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1594.             yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1595.                 *( yy_ps -= yy_len ) + 1;
  1596.             if ( yy_state >= YYLAST ||
  1597.                 yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  1598.             {
  1599.                 yy_state = yyact[ yypgo[ yy_n ] ];
  1600.             }
  1601.         }
  1602.                     /* save until reenter driver code */
  1603.         yystate = yy_state;
  1604.         yyps = yy_ps;
  1605.         yypv = yy_pv;
  1606.     }
  1607.     /*
  1608.     ** code supplied by user is placed in this switch
  1609.     */
  1610.     switch( yytmp )
  1611.     {
  1612.         
  1613. case 2:
  1614. # line 280 "../../mindy-1.x/comp/parser.y"
  1615. { process_header(NULL, NULL); free(yypvt[-0].token); } break;
  1616. case 3:
  1617. # line 281 "../../mindy-1.x/comp/parser.y"
  1618. { process_header(NULL, NULL); free(yypvt[-0].token); } break;
  1619. case 4:
  1620. # line 286 "../../mindy-1.x/comp/parser.y"
  1621. { process_header((char *)yypvt[-1].token->chars, (char *)yypvt[-0].token->chars); free(yypvt[-1].token); free(yypvt[-0].token); } break;
  1622. case 5:
  1623. # line 288 "../../mindy-1.x/comp/parser.y"
  1624. { process_header((char *)yypvt[-1].token->chars, (char *)yypvt[-0].token->chars); free(yypvt[-1].token); free(yypvt[-0].token); } break;
  1625. case 6:
  1626. # line 292 "../../mindy-1.x/comp/parser.y"
  1627. { push_yacc_recovery(SEMI); } break;
  1628. case 7:
  1629. # line 293 "../../mindy-1.x/comp/parser.y"
  1630. { Program = yypvt[-0].body; yyval.nothing = NULL; } break;
  1631. case 8:
  1632. # line 297 "../../mindy-1.x/comp/parser.y"
  1633. { yyval.body = yypvt[-1].body; } break;
  1634. case 9:
  1635. # line 301 "../../mindy-1.x/comp/parser.y"
  1636. { yyval.body = make_body(); } break;
  1637. case 10:
  1638. # line 302 "../../mindy-1.x/comp/parser.y"
  1639. { yyval.body = yypvt[-0].body; } break;
  1640. case 11:
  1641. # line 308 "../../mindy-1.x/comp/parser.y"
  1642. { yyval.body = add_constituent(make_body(), yypvt[-0].constituent); } break;
  1643. case 12:
  1644. # line 310 "../../mindy-1.x/comp/parser.y"
  1645. { free(yypvt[-1].token); yyval.body = add_constituent(yypvt[-2].body, yypvt[-0].constituent); } break;
  1646. case 13:
  1647. # line 314 "../../mindy-1.x/comp/parser.y"
  1648. { yyval.constituent = yypvt[-0].constituent; } break;
  1649. case 14:
  1650. # line 315 "../../mindy-1.x/comp/parser.y"
  1651. { yyval.constituent = yypvt[-0].constituent; } break;
  1652. case 15:
  1653. # line 316 "../../mindy-1.x/comp/parser.y"
  1654. { yyval.constituent = make_expr_constituent(yypvt[-0].expr); } break;
  1655. case 16:
  1656. # line 317 "../../mindy-1.x/comp/parser.y"
  1657. { yyval.constituent = make_error_constituent(); } break;
  1658. case 17:
  1659. # line 322 "../../mindy-1.x/comp/parser.y"
  1660. { free(yypvt[-3].token); free(yypvt[-1].token); yyval.constituent = set_class_flags(yypvt[-2].flags, yypvt[-0].constituent); } break;
  1661. case 18:
  1662. # line 324 "../../mindy-1.x/comp/parser.y"
  1663. { free(yypvt[-2].token); yyval.constituent = make_define_constant(yypvt[-1].token->line, yypvt[-0].bindings); free(yypvt[-1].token); } break;
  1664. case 19:
  1665. # line 326 "../../mindy-1.x/comp/parser.y"
  1666. { free(yypvt[-3].token); free(yypvt[-1].token); yyval.constituent = set_generic_flags(yypvt[-2].flags, yypvt[-0].constituent); } break;
  1667. case 20:
  1668. # line 328 "../../mindy-1.x/comp/parser.y"
  1669. { free(yypvt[-3].token); free(yypvt[-1].token); yyval.constituent = make_define_method(yypvt[-2].flags, yypvt[-0].method); } break;
  1670. case 21:
  1671. # line 330 "../../mindy-1.x/comp/parser.y"
  1672. { free(yypvt[-2].token); yyval.constituent = make_define_variable(yypvt[-1].token->line, yypvt[-0].bindings); free(yypvt[-1].token); } break;
  1673. case 22:
  1674. # line 332 "../../mindy-1.x/comp/parser.y"
  1675. { free(yypvt[-2].token); free(yypvt[-1].token); yyval.constituent = yypvt[-0].constituent; } break;
  1676. case 23:
  1677. # line 334 "../../mindy-1.x/comp/parser.y"
  1678. { free(yypvt[-2].token); free(yypvt[-1].token); yyval.constituent = yypvt[-0].constituent; } break;
  1679. case 24:
  1680. # line 338 "../../mindy-1.x/comp/parser.y"
  1681. { yyval.flags = 0; } break;
  1682. case 25:
  1683. # line 339 "../../mindy-1.x/comp/parser.y"
  1684. { free(yypvt[-0].token); yyval.flags = yypvt[-1].flags | flag_SEALED; } break;
  1685. case 26:
  1686. # line 340 "../../mindy-1.x/comp/parser.y"
  1687. { free(yypvt[-0].token); yyval.flags = yypvt[-1].flags | flag_OPEN; } break;
  1688. case 27:
  1689. # line 341 "../../mindy-1.x/comp/parser.y"
  1690. { free(yypvt[-0].token); yyval.flags = yypvt[-1].flags | flag_ABSTRACT; } break;
  1691. case 28:
  1692. # line 342 "../../mindy-1.x/comp/parser.y"
  1693. { free(yypvt[-0].token); yyval.flags = yypvt[-1].flags | flag_CONCRETE; } break;
  1694. case 29:
  1695. # line 343 "../../mindy-1.x/comp/parser.y"
  1696. { free(yypvt[-0].token); yyval.flags = yypvt[-1].flags | flag_PRIMARY; } break;
  1697. case 30:
  1698. # line 344 "../../mindy-1.x/comp/parser.y"
  1699. { free(yypvt[-0].token); yyval.flags = yypvt[-1].flags | flag_FREE; } break;
  1700. case 31:
  1701. # line 349 "../../mindy-1.x/comp/parser.y"
  1702. { free(yypvt[-1].token); yyval.constituent = make_let(yypvt[-0].bindings); } break;
  1703. case 32:
  1704. # line 351 "../../mindy-1.x/comp/parser.y"
  1705. { free(yypvt[-4].token); free(yypvt[-3].token); free(yypvt[-1].token);
  1706.       yyval.constituent = make_handler(make_varref(make_id(yypvt[-2].token)), yypvt[-0].expr, NULL);
  1707.     } break;
  1708. case 33:
  1709. # line 355 "../../mindy-1.x/comp/parser.y"
  1710. { free(yypvt[-7].token); free(yypvt[-6].token); free(yypvt[-5].token); free(yypvt[-2].token); free(yypvt[-1].token);
  1711.       yyval.constituent = make_handler(yypvt[-4].expr, yypvt[-0].expr, yypvt[-3].plist);
  1712.     } break;
  1713. case 34:
  1714. # line 359 "../../mindy-1.x/comp/parser.y"
  1715. { free(yypvt[-1].token); yyval.constituent = make_local_constituent(yypvt[-0].local_methods); } break;
  1716. case 35:
  1717. # line 364 "../../mindy-1.x/comp/parser.y"
  1718. { free(yypvt[-1].token); yyval.bindings = make_bindings(push_param(yypvt[-2].param,make_param_list()), yypvt[-0].expr); } break;
  1719. case 36:
  1720. # line 366 "../../mindy-1.x/comp/parser.y"
  1721. { free(yypvt[-4].token); free(yypvt[-2].token); free(yypvt[-1].token); yyval.bindings = make_bindings(yypvt[-3].param_list, yypvt[-0].expr); } break;
  1722. case 37:
  1723. # line 371 "../../mindy-1.x/comp/parser.y"
  1724. { yyval.param_list = set_rest_param(make_param_list(), yypvt[-0].id); } break;
  1725. case 38:
  1726. # line 373 "../../mindy-1.x/comp/parser.y"
  1727. { yyval.param_list = push_param(yypvt[-0].param, make_param_list()); } break;
  1728. case 39:
  1729. # line 375 "../../mindy-1.x/comp/parser.y"
  1730. { free(yypvt[-1].token); yyval.param_list = push_param(yypvt[-2].param, yypvt[-0].param_list); } break;
  1731. case 40:
  1732. # line 379 "../../mindy-1.x/comp/parser.y"
  1733. { yyval.param = make_param(make_id(yypvt[-0].token), NULL); } break;
  1734. case 41:
  1735. # line 381 "../../mindy-1.x/comp/parser.y"
  1736. { free(yypvt[-1].token); yyval.param = make_param(make_id(yypvt[-2].token), yypvt[-0].expr); } break;
  1737. case 42:
  1738. # line 385 "../../mindy-1.x/comp/parser.y"
  1739. { yyval.local_methods = add_local_method(make_local_methods(), yypvt[-0].method); } break;
  1740. case 43:
  1741. # line 387 "../../mindy-1.x/comp/parser.y"
  1742. { free(yypvt[-1].token); yyval.local_methods = add_local_method(yypvt[-2].local_methods, yypvt[-0].method); } break;
  1743. case 44:
  1744. # line 391 "../../mindy-1.x/comp/parser.y"
  1745. { yyval.method = yypvt[-0].method; } break;
  1746. case 51:
  1747. # line 404 "../../mindy-1.x/comp/parser.y"
  1748. { yyval.expr = make_literal_ref(parse_keyword_token(yypvt[-0].token)); } break;
  1749. case 52:
  1750. # line 405 "../../mindy-1.x/comp/parser.y"
  1751. { yyval.expr = yypvt[-0].expr; } break;
  1752. case 53:
  1753. # line 407 "../../mindy-1.x/comp/parser.y"
  1754. { yyval.expr = make_binop_series_expr(yypvt[-1].expr, yypvt[-0].binop_series); } break;
  1755. case 54:
  1756. # line 411 "../../mindy-1.x/comp/parser.y"
  1757. { yyval.binop_series = add_binop(make_binop_series(), yypvt[-1].binop, yypvt[-0].expr); } break;
  1758. case 55:
  1759. # line 412 "../../mindy-1.x/comp/parser.y"
  1760. { yyval.binop_series = add_binop(yypvt[-2].binop_series, yypvt[-1].binop, yypvt[-0].expr); } break;
  1761. case 56:
  1762. # line 416 "../../mindy-1.x/comp/parser.y"
  1763. { yyval.binop = make_binop(make_id(yypvt[-0].token)); } break;
  1764. case 57:
  1765. # line 417 "../../mindy-1.x/comp/parser.y"
  1766. { yyval.binop = make_binop(make_id(yypvt[-0].token)); } break;
  1767. case 58:
  1768. # line 418 "../../mindy-1.x/comp/parser.y"
  1769. { yyval.binop = make_binop(make_id(yypvt[-0].token)); } break;
  1770. case 59:
  1771. # line 419 "../../mindy-1.x/comp/parser.y"
  1772. { yyval.binop = make_binop(make_id(yypvt[-0].token)); } break;
  1773. case 60:
  1774. # line 423 "../../mindy-1.x/comp/parser.y"
  1775. { free(yypvt[-1].token); yyval.expr = make_negate(yypvt[-0].expr); } break;
  1776. case 61:
  1777. # line 424 "../../mindy-1.x/comp/parser.y"
  1778. { free(yypvt[-1].token); yyval.expr = make_not(yypvt[-0].expr); } break;
  1779. case 62:
  1780. # line 425 "../../mindy-1.x/comp/parser.y"
  1781. { yyval.expr = yypvt[-0].expr; } break;
  1782. case 63:
  1783. # line 429 "../../mindy-1.x/comp/parser.y"
  1784. { yyval.expr = make_literal_ref(yypvt[-0].literal); } break;
  1785. case 64:
  1786. # line 430 "../../mindy-1.x/comp/parser.y"
  1787. { yyval.expr = make_varref(make_id(yypvt[-0].token)); } break;
  1788. case 65:
  1789. # line 432 "../../mindy-1.x/comp/parser.y"
  1790. { free(yypvt[-2].token); free(yypvt[-0].token); yyval.expr = make_aref_or_element(yypvt[-3].expr, yypvt[-1].arglist); } break;
  1791. case 66:
  1792. # line 434 "../../mindy-1.x/comp/parser.y"
  1793. { free(yypvt[-2].token); free(yypvt[-0].token); yyval.expr = make_function_call(yypvt[-3].expr, yypvt[-1].arglist); } break;
  1794. case 67:
  1795. # line 435 "../../mindy-1.x/comp/parser.y"
  1796. { yyval.expr = make_method_ref(yypvt[-0].method); } break;
  1797. case 68:
  1798. # line 437 "../../mindy-1.x/comp/parser.y"
  1799. { free(yypvt[-1].token);
  1800.       yyval.expr = make_dot_operation(yypvt[-2].expr, make_varref(make_id(yypvt[-0].token)));
  1801.     } break;
  1802. case 69:
  1803. # line 440 "../../mindy-1.x/comp/parser.y"
  1804. { yyval.expr = yypvt[-1].expr; free(yypvt[-2].token); free(yypvt[-0].token); } break;
  1805. case 70:
  1806. # line 441 "../../mindy-1.x/comp/parser.y"
  1807. { yyval.expr = yypvt[-0].expr; } break;
  1808. case 71:
  1809. # line 445 "../../mindy-1.x/comp/parser.y"
  1810. { yyval.arglist = make_argument_list(); } break;
  1811. case 72:
  1812. # line 446 "../../mindy-1.x/comp/parser.y"
  1813. { yyval.arglist = yypvt[-0].arglist; } break;
  1814. case 73:
  1815. # line 450 "../../mindy-1.x/comp/parser.y"
  1816. { yyval.arglist = add_argument(make_argument_list(), yypvt[-0].argument); } break;
  1817. case 74:
  1818. # line 451 "../../mindy-1.x/comp/parser.y"
  1819. { free(yypvt[-1].token); yyval.arglist = add_argument(yypvt[-2].arglist, yypvt[-0].argument); } break;
  1820. case 75:
  1821. # line 455 "../../mindy-1.x/comp/parser.y"
  1822. { yyval.argument = make_argument(yypvt[-0].expr); } break;
  1823. case 76:
  1824. # line 457 "../../mindy-1.x/comp/parser.y"
  1825. { yyval.argument = make_keyword_argument(yypvt[-1].token, yypvt[-0].expr); } break;
  1826. case 77:
  1827. # line 461 "../../mindy-1.x/comp/parser.y"
  1828. { yyval.literal = parse_true_token(yypvt[-0].token); } break;
  1829. case 78:
  1830. # line 462 "../../mindy-1.x/comp/parser.y"
  1831. { yyval.literal = parse_false_token(yypvt[-0].token); } break;
  1832. case 79:
  1833. # line 463 "../../mindy-1.x/comp/parser.y"
  1834. { yyval.literal = yypvt[-0].literal; } break;
  1835. case 80:
  1836. # line 464 "../../mindy-1.x/comp/parser.y"
  1837. { yyval.literal = parse_character_token(yypvt[-0].token); } break;
  1838. case 81:
  1839. # line 465 "../../mindy-1.x/comp/parser.y"
  1840. { yyval.literal = parse_integer_token(yypvt[-0].token); } break;
  1841. case 82:
  1842. # line 466 "../../mindy-1.x/comp/parser.y"
  1843. { yyval.literal = parse_float_token(yypvt[-0].token); } break;
  1844. case 83:
  1845. # line 467 "../../mindy-1.x/comp/parser.y"
  1846. { yyval.literal = parse_keyword_token(yypvt[-0].token); } break;
  1847. case 84:
  1848. # line 469 "../../mindy-1.x/comp/parser.y"
  1849. { free(yypvt[-2].token); free(yypvt[-0].token); yyval.literal = yypvt[-1].literal; } break;
  1850. case 85:
  1851. # line 471 "../../mindy-1.x/comp/parser.y"
  1852. { free(yypvt[-2].token); free(yypvt[-0].token); yyval.literal = make_list_literal(yypvt[-1].literal_list); } break;
  1853. case 86:
  1854. # line 473 "../../mindy-1.x/comp/parser.y"
  1855. { free(yypvt[-2].token); free(yypvt[-0].token); yyval.literal = make_vector_literal(yypvt[-1].literal_list); } break;
  1856. case 87:
  1857. # line 477 "../../mindy-1.x/comp/parser.y"
  1858. { yyval.literal = parse_string_token(yypvt[-0].token); } break;
  1859. case 88:
  1860. # line 478 "../../mindy-1.x/comp/parser.y"
  1861. { yyval.literal = concat_string_token(yypvt[-1].literal, yypvt[-0].token); } break;
  1862. case 89:
  1863. # line 482 "../../mindy-1.x/comp/parser.y"
  1864. { free(yypvt[-1].token); yyval.literal = make_dotted_list_literal(yypvt[-2].literal_list, yypvt[-0].literal); } break;
  1865. case 90:
  1866. # line 487 "../../mindy-1.x/comp/parser.y"
  1867. { yyval.literal_list = make_literal_list(); } break;
  1868. case 91:
  1869. # line 489 "../../mindy-1.x/comp/parser.y"
  1870. { yyval.literal_list = yypvt[-0].literal_list; } break;
  1871. case 92:
  1872. # line 493 "../../mindy-1.x/comp/parser.y"
  1873. { yyval.literal_list = add_literal(make_literal_list(), yypvt[-0].literal); } break;
  1874. case 93:
  1875. # line 495 "../../mindy-1.x/comp/parser.y"
  1876. { free(yypvt[-1].token); yyval.literal_list = add_literal(yypvt[-2].literal_list, yypvt[-0].literal); } break;
  1877. case 94:
  1878. # line 499 "../../mindy-1.x/comp/parser.y"
  1879. { yyval.literal = yypvt[-0].literal; } break;
  1880. case 95:
  1881. # line 500 "../../mindy-1.x/comp/parser.y"
  1882. { yyval.literal = parse_keyword_token(yypvt[-0].token); } break;
  1883. case 96:
  1884. # line 504 "../../mindy-1.x/comp/parser.y"
  1885. { push_yacc_recovery(END); } break;
  1886. case 97:
  1887. # line 506 "../../mindy-1.x/comp/parser.y"
  1888. { free(yypvt[-3].token); free(yypvt[-0].token); yyval.expr = make_body_expr(yypvt[-1].body);
  1889.           pop_yacc_recoveries(1); } break;
  1890. case 98:
  1891. # line 508 "../../mindy-1.x/comp/parser.y"
  1892. { push_yacc_recovery(END);
  1893.                      push_yacc_recovery(CLEANUP);
  1894.                      push_yacc_recovery(EXCEPTION); } break;
  1895. case 99:
  1896. # line 512 "../../mindy-1.x/comp/parser.y"
  1897. { free(yypvt[-7].token); free(yypvt[-5].token); free(yypvt[-1].token); pop_yacc_recoveries(3); 
  1898.       yyval.expr = make_block(yypvt[-8].token->line, yypvt[-6].token ? make_id(yypvt[-6].token) : NULL, yypvt[-3].body, yypvt[-2].block_epilog);
  1899.       free(yypvt[-8].token);
  1900.     } break;
  1901. case 100:
  1902. # line 516 "../../mindy-1.x/comp/parser.y"
  1903. { push_yacc_recovery(END); } break;
  1904. case 101:
  1905. # line 518 "../../mindy-1.x/comp/parser.y"
  1906. { free(yypvt[-4].token); free(yypvt[-1].token); yyval.expr = make_case(yypvt[-2].condition_body);
  1907.           pop_yacc_recoveries(1); } break;
  1908. case 102:
  1909. # line 520 "../../mindy-1.x/comp/parser.y"
  1910. { push_yacc_recovery(END);
  1911.                       push_yacc_recovery(ELSE); } break;
  1912. case 103:
  1913. # line 523 "../../mindy-1.x/comp/parser.y"
  1914. { free(yypvt[-8].token); free(yypvt[-7].token); free(yypvt[-5].token); free(yypvt[-1].token); yyval.expr = make_if(yypvt[-6].expr, yypvt[-3].body, yypvt[-2].else_part);
  1915.           pop_yacc_recoveries(2); } break;
  1916. case 104:
  1917. # line 525 "../../mindy-1.x/comp/parser.y"
  1918. { push_yacc_recovery(END);
  1919.                        push_yacc_recovery(FINALLY); } break;
  1920. case 105:
  1921. # line 528 "../../mindy-1.x/comp/parser.y"
  1922. { free(yypvt[-8].token); free(yypvt[-7].token); free(yypvt[-5].token); free(yypvt[-1].token); yyval.expr = make_for(yypvt[-6].for_header, yypvt[-3].body, yypvt[-2].body);
  1923.           pop_yacc_recoveries(2); } break;
  1924. case 106:
  1925. # line 530 "../../mindy-1.x/comp/parser.y"
  1926. {push_yacc_recovery(END);} break;
  1927. case 107:
  1928. # line 532 "../../mindy-1.x/comp/parser.y"
  1929. { free(yypvt[-8].token);free(yypvt[-7].token);free(yypvt[-4].token);free(yypvt[-1].token); yyval.expr = make_select(yypvt[-6].expr, yypvt[-5].expr, yypvt[-2].condition_body);
  1930.           pop_yacc_recoveries(1); } break;
  1931. case 108:
  1932. # line 534 "../../mindy-1.x/comp/parser.y"
  1933. { push_yacc_recovery(END); } break;
  1934. case 109:
  1935. # line 536 "../../mindy-1.x/comp/parser.y"
  1936. { free(yypvt[-7].token);free(yypvt[-6].token);free(yypvt[-4].token);free(yypvt[-1].token);
  1937.       yyval.expr = make_if(yypvt[-5].expr, NULL, make_else(0, yypvt[-2].body));
  1938.           pop_yacc_recoveries(1); } break;
  1939. case 110:
  1940. # line 539 "../../mindy-1.x/comp/parser.y"
  1941. { push_yacc_recovery(END); } break;
  1942. case 111:
  1943. # line 541 "../../mindy-1.x/comp/parser.y"
  1944. { free(yypvt[-7].token);free(yypvt[-6].token);free(yypvt[-4].token);free(yypvt[-1].token); pop_yacc_recoveries(1);
  1945.       yyval.expr = make_for(make_for_header(yypvt[-5].expr), yypvt[-2].body, NULL);
  1946.     } break;
  1947. case 112:
  1948. # line 544 "../../mindy-1.x/comp/parser.y"
  1949. { push_yacc_recovery(END); } break;
  1950. case 113:
  1951. # line 546 "../../mindy-1.x/comp/parser.y"
  1952. { free(yypvt[-7].token);free(yypvt[-6].token);free(yypvt[-4].token);free(yypvt[-1].token);pop_yacc_recoveries(1);
  1953.       yyval.expr = make_for(make_for_header(make_not(yypvt[-5].expr)), yypvt[-2].body, NULL);
  1954.     } break;
  1955. case 114:
  1956. # line 552 "../../mindy-1.x/comp/parser.y"
  1957. { yyval.block_epilog = NULL; } break;
  1958. case 115:
  1959. # line 553 "../../mindy-1.x/comp/parser.y"
  1960. { yyval.block_epilog = yypvt[-0].block_epilog; } break;
  1961. case 116:
  1962. # line 558 "../../mindy-1.x/comp/parser.y"
  1963. { yyval.block_epilog = make_block_epilog(yypvt[-2].exception_clauses, yypvt[-1].body, yypvt[-0].exception_clauses); } break;
  1964. case 117:
  1965. # line 560 "../../mindy-1.x/comp/parser.y"
  1966. { yyval.block_epilog = make_block_epilog(yypvt[-0].exception_clauses, NULL, NULL); } break;
  1967. case 118:
  1968. # line 564 "../../mindy-1.x/comp/parser.y"
  1969. { yyval.condition_body = yypvt[-0].condition_body; } break;
  1970. case 119:
  1971. # line 569 "../../mindy-1.x/comp/parser.y"
  1972. { free(yypvt[-1].token); yyval.for_header = make_for_header(yypvt[-0].expr); } break;
  1973. case 120:
  1974. # line 571 "../../mindy-1.x/comp/parser.y"
  1975. { free(yypvt[-1].token); yyval.for_header = make_for_header(make_not(yypvt[-0].expr)); } break;
  1976. case 121:
  1977. # line 573 "../../mindy-1.x/comp/parser.y"
  1978. { yyval.for_header = push_for_clause(yypvt[-0].for_clause, make_for_header(NULL)); } break;
  1979. case 122:
  1980. # line 575 "../../mindy-1.x/comp/parser.y"
  1981. { free(yypvt[-1].token); yyval.for_header = push_for_clause(yypvt[-2].for_clause, yypvt[-0].for_header); } break;
  1982. case 123:
  1983. # line 579 "../../mindy-1.x/comp/parser.y"
  1984. { yyval.exception_clauses = NULL; } break;
  1985. case 124:
  1986. # line 580 "../../mindy-1.x/comp/parser.y"
  1987. { yyval.exception_clauses = yypvt[-0].exception_clauses; } break;
  1988. case 125:
  1989. # line 585 "../../mindy-1.x/comp/parser.y"
  1990. { yyval.exception_clauses = add_exception_clause(make_exception_clauses(), yypvt[-0].exception_clause); } break;
  1991. case 126:
  1992. # line 587 "../../mindy-1.x/comp/parser.y"
  1993. { yyval.exception_clauses = add_exception_clause(yypvt[-1].exception_clauses, yypvt[-0].exception_clause); } break;
  1994. case 127:
  1995. # line 592 "../../mindy-1.x/comp/parser.y"
  1996. { free(yypvt[-2].token);
  1997.       yyval.exception_clause = make_exception_clause(make_varref(make_id(yypvt[-1].token)),
  1998.                      NULL, NULL, yypvt[-0].body);
  1999.     } break;
  2000. case 128:
  2001. # line 597 "../../mindy-1.x/comp/parser.y"
  2002. { free(yypvt[-5].token); free(yypvt[-4].token); free(yypvt[-1].token);
  2003.       yyval.exception_clause = make_exception_clause(yypvt[-3].expr, NULL, yypvt[-2].plist, yypvt[-0].body);
  2004.     } break;
  2005. case 129:
  2006. # line 602 "../../mindy-1.x/comp/parser.y"
  2007. { free(yypvt[-7].token); free(yypvt[-6].token); free(yypvt[-4].token); free(yypvt[-1].token);
  2008.       yyval.exception_clause = make_exception_clause(yypvt[-3].expr, make_id(yypvt[-5].token), yypvt[-2].plist, yypvt[-0].body);
  2009.     } break;
  2010. case 130:
  2011. # line 609 "../../mindy-1.x/comp/parser.y"
  2012. { free(yypvt[-2].token);
  2013.       yyval.condition_body = push_condition_clause(make_otherwise_condition_clause(yypvt[-0].body),
  2014.                      NULL);
  2015.     } break;
  2016. case 131:
  2017. # line 614 "../../mindy-1.x/comp/parser.y"
  2018. { yyval.condition_body = push_condition_clause(yypvt[-1].condition_clause, NULL); } break;
  2019. case 132:
  2020. # line 616 "../../mindy-1.x/comp/parser.y"
  2021. { free(yypvt[-1].token); yyval.condition_body = push_condition_clause(yypvt[-2].condition_clause, yypvt[-0].condition_body); } break;
  2022. case 133:
  2023. # line 618 "../../mindy-1.x/comp/parser.y"
  2024. { free(yypvt[-1].token); yyval.condition_body = complete_condition_clauses(yypvt[-2].condition_clause, yypvt[-0].incomplete_condition_body); } break;
  2025. case 134:
  2026. # line 623 "../../mindy-1.x/comp/parser.y"
  2027. { yyval.incomplete_condition_body = make_incomplete_condition_clauses(yypvt[-1].constituent, NULL); } break;
  2028. case 135:
  2029. # line 625 "../../mindy-1.x/comp/parser.y"
  2030. { free(yypvt[-1].token); yyval.incomplete_condition_body = make_incomplete_condition_clauses(yypvt[-2].constituent, yypvt[-0].condition_body); } break;
  2031. case 136:
  2032. # line 627 "../../mindy-1.x/comp/parser.y"
  2033. { free(yypvt[-1].token); yyval.incomplete_condition_body = push_condition_constituent(yypvt[-2].constituent, yypvt[-0].incomplete_condition_body); } break;
  2034. case 137:
  2035. # line 632 "../../mindy-1.x/comp/parser.y"
  2036. { free(yypvt[-1].token); yyval.condition_clause = push_condition(yypvt[-2].expr, make_condition_clause(yypvt[-0].constituent)); } break;
  2037. case 138:
  2038. # line 634 "../../mindy-1.x/comp/parser.y"
  2039. { free(yypvt[-1].token); yyval.condition_clause = push_condition(yypvt[-2].expr, yypvt[-0].condition_clause); } break;
  2040. case 139:
  2041. # line 639 "../../mindy-1.x/comp/parser.y"
  2042. { free(yypvt[-3].token); free(yypvt[-1].token);
  2043.     yyval.for_clause=make_equal_then_for_clause(push_param(yypvt[-4].param,make_param_list()),yypvt[-2].expr,yypvt[-0].expr);} break;
  2044. case 140:
  2045. # line 642 "../../mindy-1.x/comp/parser.y"
  2046. { free(yypvt[-6].token); free(yypvt[-4].token); free(yypvt[-3].token); free(yypvt[-1].token);
  2047.       yyval.for_clause = make_equal_then_for_clause(yypvt[-5].param_list, yypvt[-2].expr, yypvt[-0].expr); } break;
  2048. case 141:
  2049. # line 645 "../../mindy-1.x/comp/parser.y"
  2050. { free(yypvt[-1].token); yyval.for_clause = make_in_for_clause(yypvt[-2].param, NULL, yypvt[-0].expr); } break;
  2051. case 142:
  2052. # line 647 "../../mindy-1.x/comp/parser.y"
  2053. { free(yypvt[-3].token); free(yypvt[-1].token); yyval.for_clause = make_in_for_clause(yypvt[-4].param, yypvt[-2].param, yypvt[-0].expr); } break;
  2054. case 143:
  2055. # line 649 "../../mindy-1.x/comp/parser.y"
  2056. { free(yypvt[-3].token); yyval.for_clause = make_from_for_clause(yypvt[-4].param, yypvt[-2].expr, yypvt[-1].to_part, yypvt[-0].expr); } break;
  2057. case 144:
  2058. # line 652 "../../mindy-1.x/comp/parser.y"
  2059. { free(yypvt[-1].token); yyval.expr = yypvt[-0].expr; } break;
  2060. case 145:
  2061. # line 653 "../../mindy-1.x/comp/parser.y"
  2062. { free(yypvt[-1].token); yyval.body = yypvt[-0].body; } break;
  2063. case 146:
  2064. # line 654 "../../mindy-1.x/comp/parser.y"
  2065. { free(yypvt[-1].token); yyval.body = yypvt[-0].body; } break;
  2066. case 147:
  2067. # line 657 "../../mindy-1.x/comp/parser.y"
  2068. { yyval.else_part = make_else(yypvt[-1].token->line, yypvt[-0].body); free(yypvt[-1].token); } break;
  2069. case 148:
  2070. # line 659 "../../mindy-1.x/comp/parser.y"
  2071. { free(yypvt[-4].token); free(yypvt[-2].token);
  2072.       yyval.else_part = make_else(yypvt[-5].token->line, make_expr_body(make_if(yypvt[-3].expr, yypvt[-1].body, yypvt[-0].else_part)));
  2073.       free(yypvt[-5].token); 
  2074.     } break;
  2075. case 149:
  2076. # line 666 "../../mindy-1.x/comp/parser.y"
  2077. { yyval.to_part = NULL; } break;
  2078. case 150:
  2079. # line 667 "../../mindy-1.x/comp/parser.y"
  2080. { free(yypvt[-1].token); yyval.to_part = make_to(yypvt[-0].expr); } break;
  2081. case 151:
  2082. # line 668 "../../mindy-1.x/comp/parser.y"
  2083. { free(yypvt[-1].token); yyval.to_part = make_above(yypvt[-0].expr); } break;
  2084. case 152:
  2085. # line 669 "../../mindy-1.x/comp/parser.y"
  2086. { free(yypvt[-1].token); yyval.to_part = make_below(yypvt[-0].expr); } break;
  2087. case 153:
  2088. # line 675 "../../mindy-1.x/comp/parser.y"
  2089. { struct id *id = make_id(yypvt[-7].token);
  2090.       verify_symbol(id, yypvt[-0].token); free(yypvt[-6].token); free(yypvt[-4].token); free(yypvt[-2].token);
  2091.       yyval.constituent = make_class_definition(id, yypvt[-5].superclass_list, yypvt[-3].class_guts);
  2092.     } break;
  2093. case 154:
  2094. # line 683 "../../mindy-1.x/comp/parser.y"
  2095. { yyval.superclass_list = add_superclass(make_superclass_list(), yypvt[-0].expr); } break;
  2096. case 155:
  2097. # line 685 "../../mindy-1.x/comp/parser.y"
  2098. { free(yypvt[-1].token); yyval.superclass_list = add_superclass(yypvt[-2].superclass_list, yypvt[-0].expr); } break;
  2099. case 156:
  2100. # line 689 "../../mindy-1.x/comp/parser.y"
  2101. { yyval.class_guts = NULL; } break;
  2102. case 157:
  2103. # line 690 "../../mindy-1.x/comp/parser.y"
  2104. { yyval.class_guts = yypvt[-1].class_guts; } break;
  2105. case 158:
  2106. # line 695 "../../mindy-1.x/comp/parser.y"
  2107. { yyval.class_guts = add_slot_spec(make_class_guts(), yypvt[-0].slot_spec); } break;
  2108. case 159:
  2109. # line 697 "../../mindy-1.x/comp/parser.y"
  2110. { yyval.class_guts = add_initarg_spec(make_class_guts(), yypvt[-0].initarg_spec); } break;
  2111. case 160:
  2112. # line 699 "../../mindy-1.x/comp/parser.y"
  2113. { yyval.class_guts = add_inherited_spec(make_class_guts(), yypvt[-0].inherited_spec); } break;
  2114. case 161:
  2115. # line 701 "../../mindy-1.x/comp/parser.y"
  2116. { free(yypvt[-1].token); yyval.class_guts = add_slot_spec(yypvt[-2].class_guts, yypvt[-0].slot_spec); } break;
  2117. case 162:
  2118. # line 703 "../../mindy-1.x/comp/parser.y"
  2119. { free(yypvt[-1].token); yyval.class_guts = add_initarg_spec(yypvt[-2].class_guts, yypvt[-0].initarg_spec); } break;
  2120. case 163:
  2121. # line 705 "../../mindy-1.x/comp/parser.y"
  2122. { free(yypvt[-1].token); yyval.class_guts = add_inherited_spec(yypvt[-2].class_guts, yypvt[-0].inherited_spec); } break;
  2123. case 164:
  2124. # line 710 "../../mindy-1.x/comp/parser.y"
  2125. {
  2126.         int line = yypvt[-3].token->line;
  2127.         free(yypvt[-3].token);
  2128.         yyval.slot_spec = make_slot_spec(line, yypvt[-5].flags, yypvt[-4].slot_allocation, yypvt[-2].token ? make_id(yypvt[-2].token) : NULL, yypvt[-1].expr, yypvt[-0].plist);
  2129.     } break;
  2130. case 165:
  2131. # line 719 "../../mindy-1.x/comp/parser.y"
  2132. { free(yypvt[-2].token); yyval.initarg_spec = make_initarg_spec(yypvt[-3].bool, yypvt[-1].token, yypvt[-0].plist); } break;
  2133. case 166:
  2134. # line 723 "../../mindy-1.x/comp/parser.y"
  2135. { free(yypvt[-0].token); yyval.bool = TRUE; } break;
  2136. case 167:
  2137. # line 724 "../../mindy-1.x/comp/parser.y"
  2138. { yyval.bool = FALSE; } break;
  2139. case 168:
  2140. # line 729 "../../mindy-1.x/comp/parser.y"
  2141. { free(yypvt[-3].token); free(yypvt[-2].token); yyval.inherited_spec = make_inherited_spec(make_id(yypvt[-1].token), yypvt[-0].plist); } break;
  2142. case 169:
  2143. # line 734 "../../mindy-1.x/comp/parser.y"
  2144. { yyval.slot_allocation = alloc_INSTANCE; } break;
  2145. case 170:
  2146. # line 735 "../../mindy-1.x/comp/parser.y"
  2147. { free(yypvt[-0].token); yyval.slot_allocation = alloc_INSTANCE; } break;
  2148. case 171:
  2149. # line 736 "../../mindy-1.x/comp/parser.y"
  2150. { free(yypvt[-0].token); yyval.slot_allocation = alloc_CLASS; } break;
  2151. case 172:
  2152. # line 737 "../../mindy-1.x/comp/parser.y"
  2153. { free(yypvt[-0].token); yyval.slot_allocation = alloc_SUBCLASS; } break;
  2154. case 173:
  2155. # line 738 "../../mindy-1.x/comp/parser.y"
  2156. { free(yypvt[-0].token); yyval.slot_allocation = alloc_CONSTANT; } break;
  2157. case 174:
  2158. # line 739 "../../mindy-1.x/comp/parser.y"
  2159. { free(yypvt[-0].token); yyval.slot_allocation = alloc_VIRTUAL; } break;
  2160. case 175:
  2161. # line 743 "../../mindy-1.x/comp/parser.y"
  2162. { yyval.expr = NULL; } break;
  2163. case 176:
  2164. # line 744 "../../mindy-1.x/comp/parser.y"
  2165. { free(yypvt[-1].token); yyval.expr = yypvt[-0].expr; } break;
  2166. case 177:
  2167. # line 748 "../../mindy-1.x/comp/parser.y"
  2168. { yyval.plist = make_property_list(); } break;
  2169. case 178:
  2170. # line 749 "../../mindy-1.x/comp/parser.y"
  2171. { yyval.plist = yypvt[-0].plist; } break;
  2172. case 179:
  2173. # line 754 "../../mindy-1.x/comp/parser.y"
  2174. { free(yypvt[-2].token); yyval.plist = add_property(make_property_list(), yypvt[-1].token, yypvt[-0].expr); } break;
  2175. case 180:
  2176. # line 756 "../../mindy-1.x/comp/parser.y"
  2177. { free(yypvt[-2].token); yyval.plist = add_property(yypvt[-3].plist, yypvt[-1].token, yypvt[-0].expr); } break;
  2178. case 181:
  2179. # line 761 "../../mindy-1.x/comp/parser.y"
  2180. { free(yypvt[-3].token); free(yypvt[-1].token);
  2181.       yyval.constituent = make_define_generic(make_id(yypvt[-4].token), yypvt[-2].param_list, yypvt[-0].gf_suffix);
  2182.     } break;
  2183. case 182:
  2184. # line 768 "../../mindy-1.x/comp/parser.y"
  2185. { yyval.gf_suffix = make_gf_suffix(NULL, yypvt[-0].plist); } break;
  2186. case 183:
  2187. # line 770 "../../mindy-1.x/comp/parser.y"
  2188. { free(yypvt[-2].token);
  2189.       yyval.gf_suffix = make_gf_suffix
  2190.               (add_return_type(make_return_type_list(FALSE, NULL), yypvt[-1].expr),
  2191.            yypvt[-0].plist);
  2192.     } break;
  2193. case 184:
  2194. # line 776 "../../mindy-1.x/comp/parser.y"
  2195. { free(yypvt[-4].token); free(yypvt[-3].token); free(yypvt[-1].token); yyval.gf_suffix = make_gf_suffix(yypvt[-2].return_type_list, yypvt[-0].plist); } break;
  2196. case 185:
  2197. # line 780 "../../mindy-1.x/comp/parser.y"
  2198. { yyval.param_list = make_param_list(); } break;
  2199. case 186:
  2200. # line 782 "../../mindy-1.x/comp/parser.y"
  2201. { yyval.param_list = push_param(yypvt[-1].param, yypvt[-0].param_list); } break;
  2202. case 187:
  2203. # line 783 "../../mindy-1.x/comp/parser.y"
  2204. { yyval.param_list = yypvt[-0].param_list; } break;
  2205. case 188:
  2206. # line 788 "../../mindy-1.x/comp/parser.y"
  2207. { yyval.param_list = make_param_list(); } break;
  2208. case 189:
  2209. # line 790 "../../mindy-1.x/comp/parser.y"
  2210. { free(yypvt[-2].token); yyval.param_list = push_param(yypvt[-1].param, yypvt[-0].param_list); } break;
  2211. case 190:
  2212. # line 792 "../../mindy-1.x/comp/parser.y"
  2213. { free(yypvt[-1].token); yyval.param_list = yypvt[-0].param_list; } break;
  2214. case 191:
  2215. # line 797 "../../mindy-1.x/comp/parser.y"
  2216. { yyval.param_list = set_rest_param(make_param_list(), yypvt[-0].id); } break;
  2217. case 192:
  2218. # line 799 "../../mindy-1.x/comp/parser.y"
  2219. { free(yypvt[-1].token); yyval.param_list = set_rest_param(yypvt[-0].param_list, yypvt[-2].id); } break;
  2220. case 193:
  2221. # line 801 "../../mindy-1.x/comp/parser.y"
  2222. { yyval.param_list = yypvt[-0].param_list; } break;
  2223. case 194:
  2224. # line 805 "../../mindy-1.x/comp/parser.y"
  2225. { free(yypvt[-1].token); yyval.param_list = yypvt[-0].param_list; } break;
  2226. case 195:
  2227. # line 806 "../../mindy-1.x/comp/parser.y"
  2228. { free(yypvt[-0].token); yyval.param_list = allow_all_keywords(make_param_list()); } break;
  2229. case 196:
  2230. # line 810 "../../mindy-1.x/comp/parser.y"
  2231. { yyval.param_list = allow_keywords(make_param_list()); } break;
  2232. case 197:
  2233. # line 811 "../../mindy-1.x/comp/parser.y"
  2234. { yyval.param_list = yypvt[-0].param_list; } break;
  2235. case 198:
  2236. # line 816 "../../mindy-1.x/comp/parser.y"
  2237. { yyval.param_list = push_keyword_param(yypvt[-0].keyword_param, allow_keywords(make_param_list())); } break;
  2238. case 199:
  2239. # line 818 "../../mindy-1.x/comp/parser.y"
  2240. { free(yypvt[-1].token); free(yypvt[-0].token);
  2241.       yyval.param_list = push_keyword_param(yypvt[-2].keyword_param, allow_all_keywords(make_param_list())); } break;
  2242. case 200:
  2243. # line 821 "../../mindy-1.x/comp/parser.y"
  2244. { free(yypvt[-1].token); yyval.param_list = push_keyword_param(yypvt[-2].keyword_param, yypvt[-0].param_list); } break;
  2245. case 201:
  2246. # line 826 "../../mindy-1.x/comp/parser.y"
  2247. { yyval.keyword_param = make_keyword_param(yypvt[-2].token, yypvt[-1].token ? make_id(yypvt[-1].token) : NULL, yypvt[-0].expr, NULL); } break;
  2248. case 202:
  2249. # line 828 "../../mindy-1.x/comp/parser.y"
  2250. { yyval.keyword_param = make_keyword_param(NULL, make_id(yypvt[-1].token), yypvt[-0].expr, NULL); } break;
  2251. case 203:
  2252. # line 833 "../../mindy-1.x/comp/parser.y"
  2253. { free(yypvt[-1].token); yyval.method = set_method_source(yypvt[-3].token, yypvt[-2].method); } break;
  2254. case 204:
  2255. # line 838 "../../mindy-1.x/comp/parser.y"
  2256. { struct id *id = make_id(yypvt[-4].token);
  2257.       free(yypvt[-2].token); verify_symbol(id, yypvt[-0].token);
  2258.       yyval.method = set_method_name(id, yypvt[-3].method);
  2259.     } break;
  2260. case 205:
  2261. # line 846 "../../mindy-1.x/comp/parser.y"
  2262. { free(yypvt[-5].token); free(yypvt[-3].token); free(yypvt[-1].token);
  2263.       yyval.method = make_method_description(yypvt[-4].param_list, yypvt[-2].return_type_list, yypvt[-0].body);
  2264.     } break;
  2265. case 206:
  2266. # line 850 "../../mindy-1.x/comp/parser.y"
  2267. { free(yypvt[-4].token); free(yypvt[-2].token);
  2268.       yyval.method = make_method_description(yypvt[-3].param_list, yypvt[-1].return_type_list, make_body());
  2269.     } break;
  2270. case 207:
  2271. # line 854 "../../mindy-1.x/comp/parser.y"
  2272. { free(yypvt[-4].token); free(yypvt[-2].token);
  2273.       yyval.method = make_method_description(yypvt[-3].param_list, NULL, yypvt[-0].body);
  2274.     } break;
  2275. case 208:
  2276. # line 861 "../../mindy-1.x/comp/parser.y"
  2277. { free(yypvt[-1].token); yyval.return_type_list = yypvt[-0].return_type_list; } break;
  2278. case 209:
  2279. # line 863 "../../mindy-1.x/comp/parser.y"
  2280. { free(yypvt[-3].token); free(yypvt[-2].token); free(yypvt[-0].token); yyval.return_type_list = yypvt[-1].return_type_list; } break;
  2281. case 210:
  2282. # line 868 "../../mindy-1.x/comp/parser.y"
  2283. { yyval.return_type_list = make_return_type_list(FALSE, NULL); } break;
  2284. case 211:
  2285. # line 870 "../../mindy-1.x/comp/parser.y"
  2286. { free(yypvt[-1].token); yyval.return_type_list = make_return_type_list(TRUE, yypvt[-0].expr); } break;
  2287. case 212:
  2288. # line 872 "../../mindy-1.x/comp/parser.y"
  2289. { yyval.return_type_list = yypvt[-0].return_type_list; } break;
  2290. case 213:
  2291. # line 874 "../../mindy-1.x/comp/parser.y"
  2292. { free(yypvt[-2].token); free(yypvt[-1].token); yyval.return_type_list = set_return_type_rest_type(yypvt[-3].return_type_list, yypvt[-0].expr); } break;
  2293. case 214:
  2294. # line 879 "../../mindy-1.x/comp/parser.y"
  2295. { yyval.return_type_list = add_return_type(make_return_type_list(FALSE, NULL), yypvt[-0].expr); } break;
  2296. case 215:
  2297. # line 881 "../../mindy-1.x/comp/parser.y"
  2298. { free(yypvt[-1].token); yyval.return_type_list = add_return_type(yypvt[-2].return_type_list, yypvt[-0].expr); } break;
  2299. case 216:
  2300. # line 885 "../../mindy-1.x/comp/parser.y"
  2301. { free(yypvt[-0].token); yyval.expr = NULL; } break;
  2302. case 217:
  2303. # line 886 "../../mindy-1.x/comp/parser.y"
  2304. { free(yypvt[-2].token); free(yypvt[-1].token); yyval.expr = yypvt[-0].expr; } break;
  2305. case 218:
  2306. # line 890 "../../mindy-1.x/comp/parser.y"
  2307. { yyval.param_list = make_param_list(); } break;
  2308. case 219:
  2309. # line 891 "../../mindy-1.x/comp/parser.y"
  2310. { yyval.param_list = push_param(yypvt[-1].param, yypvt[-0].param_list); } break;
  2311. case 220:
  2312. # line 892 "../../mindy-1.x/comp/parser.y"
  2313. { yyval.param_list = yypvt[-0].param_list; } break;
  2314. case 221:
  2315. # line 897 "../../mindy-1.x/comp/parser.y"
  2316. { yyval.param_list = make_param_list(); } break;
  2317. case 222:
  2318. # line 899 "../../mindy-1.x/comp/parser.y"
  2319. { free(yypvt[-2].token); yyval.param_list = push_param(yypvt[-1].param, yypvt[-0].param_list); } break;
  2320. case 223:
  2321. # line 901 "../../mindy-1.x/comp/parser.y"
  2322. { free(yypvt[-1].token); yyval.param_list = yypvt[-0].param_list; } break;
  2323. case 224:
  2324. # line 906 "../../mindy-1.x/comp/parser.y"
  2325. { yyval.param = make_param(make_id(yypvt[-0].token), NULL); } break;
  2326. case 225:
  2327. # line 908 "../../mindy-1.x/comp/parser.y"
  2328. { free(yypvt[-1].token); yyval.param = make_param(make_id(yypvt[-2].token), yypvt[-0].expr); } break;
  2329. case 226:
  2330. # line 910 "../../mindy-1.x/comp/parser.y"
  2331. { free(yypvt[-1].token); yyval.param = make_param(make_id(yypvt[-2].token), make_singleton(yypvt[-0].expr)); } break;
  2332. case 227:
  2333. # line 915 "../../mindy-1.x/comp/parser.y"
  2334. { yyval.param_list = set_next_param(make_param_list(), yypvt[-0].id); } break;
  2335. case 228:
  2336. # line 917 "../../mindy-1.x/comp/parser.y"
  2337. { free(yypvt[-1].token); yyval.param_list = set_next_param(yypvt[-0].param_list, yypvt[-2].id); } break;
  2338. case 229:
  2339. # line 919 "../../mindy-1.x/comp/parser.y"
  2340. { yyval.param_list = yypvt[-0].param_list; } break;
  2341. case 230:
  2342. # line 923 "../../mindy-1.x/comp/parser.y"
  2343. { free(yypvt[-1].token); yyval.id = make_id(yypvt[-0].token); } break;
  2344. case 231:
  2345. # line 928 "../../mindy-1.x/comp/parser.y"
  2346. { yyval.param_list = set_rest_param(make_param_list(), yypvt[-0].id); } break;
  2347. case 232:
  2348. # line 930 "../../mindy-1.x/comp/parser.y"
  2349. { free(yypvt[-1].token); yyval.param_list = set_rest_param(yypvt[-0].param_list, yypvt[-2].id); } break;
  2350. case 233:
  2351. # line 932 "../../mindy-1.x/comp/parser.y"
  2352. { yyval.param_list = yypvt[-0].param_list; } break;
  2353. case 234:
  2354. # line 936 "../../mindy-1.x/comp/parser.y"
  2355. { free(yypvt[-1].token); yyval.id = make_id(yypvt[-0].token); } break;
  2356. case 235:
  2357. # line 941 "../../mindy-1.x/comp/parser.y"
  2358. { free(yypvt[-1].token); yyval.param_list = yypvt[-0].param_list; } break;
  2359. case 236:
  2360. # line 943 "../../mindy-1.x/comp/parser.y"
  2361. { free(yypvt[-0].token); yyval.param_list = allow_all_keywords(make_param_list()); } break;
  2362. case 237:
  2363. # line 947 "../../mindy-1.x/comp/parser.y"
  2364. { yyval.param_list = allow_keywords(make_param_list()); } break;
  2365. case 238:
  2366. # line 949 "../../mindy-1.x/comp/parser.y"
  2367. { free(yypvt[-1].token); free(yypvt[-0].token); yyval.param_list = allow_all_keywords(make_param_list()); } break;
  2368. case 239:
  2369. # line 950 "../../mindy-1.x/comp/parser.y"
  2370. { yyval.param_list = yypvt[-0].param_list; } break;
  2371. case 240:
  2372. # line 955 "../../mindy-1.x/comp/parser.y"
  2373. { yyval.param_list = push_keyword_param(yypvt[-0].keyword_param, allow_keywords(make_param_list())); } break;
  2374. case 241:
  2375. # line 957 "../../mindy-1.x/comp/parser.y"
  2376. { free(yypvt[-1].token); free(yypvt[-0].token);
  2377.       yyval.param_list = push_keyword_param(yypvt[-2].keyword_param, allow_all_keywords(make_param_list())); } break;
  2378. case 242:
  2379. # line 960 "../../mindy-1.x/comp/parser.y"
  2380. { free(yypvt[-1].token); yyval.param_list = push_keyword_param(yypvt[-2].keyword_param, yypvt[-0].param_list); } break;
  2381. case 243:
  2382. # line 965 "../../mindy-1.x/comp/parser.y"
  2383. { yyval.keyword_param = make_keyword_param(yypvt[-3].token, make_id(yypvt[-2].token), yypvt[-1].expr, yypvt[-0].expr); } break;
  2384. case 244:
  2385. # line 967 "../../mindy-1.x/comp/parser.y"
  2386. { free(yypvt[-2].token); free(yypvt[-0].token);
  2387.       yyval.keyword_param = make_keyword_param(yypvt[-4].token, make_id(yypvt[-3].token), NULL, yypvt[-1].expr); } break;
  2388. case 245:
  2389. # line 972 "../../mindy-1.x/comp/parser.y"
  2390. { yyval.token = NULL; } break;
  2391. case 246:
  2392. # line 973 "../../mindy-1.x/comp/parser.y"
  2393. { yyval.token = yypvt[-0].token; } break;
  2394. case 247:
  2395. # line 977 "../../mindy-1.x/comp/parser.y"
  2396. { yyval.expr = NULL; } break;
  2397. case 248:
  2398. # line 978 "../../mindy-1.x/comp/parser.y"
  2399. { free(yypvt[-1].token); yyval.expr = yypvt[-0].expr; } break;
  2400. case 249:
  2401. # line 982 "../../mindy-1.x/comp/parser.y"
  2402. { yyval.expr = NULL; } break;
  2403. case 250:
  2404. # line 983 "../../mindy-1.x/comp/parser.y"
  2405. { free(yypvt[-1].token); yyval.expr = yypvt[-0].expr; } break;
  2406. case 251:
  2407. # line 988 "../../mindy-1.x/comp/parser.y"
  2408. { if (yypvt[-0].token) {
  2409.           if (strcasecmp((char *)yypvt[-4].token->chars, (char *)yypvt[-0].token->chars) != 0) {
  2410.           error(yypvt[-0].token->line, "mismatched name, ``%s'' isn't ``%s''",
  2411.             yypvt[-0].token->chars, yypvt[-4].token->chars);
  2412.           yacc_recover();
  2413.           }
  2414.           free(yypvt[-0].token);
  2415.       } 
  2416.       free(yypvt[-2].token);
  2417.       yyval.constituent = (struct constituent *) set_namespace_name(yypvt[-3].defnamespace_constituent, yypvt[-4].token);
  2418.     } break;
  2419. case 252:
  2420. # line 1002 "../../mindy-1.x/comp/parser.y"
  2421. { yyval.nothing = NULL; } break;
  2422. case 253:
  2423. # line 1003 "../../mindy-1.x/comp/parser.y"
  2424. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2425. case 254:
  2426. # line 1006 "../../mindy-1.x/comp/parser.y"
  2427. { yyval.defnamespace_constituent = make_define_module(); } break;
  2428. case 256:
  2429. # line 1008 "../../mindy-1.x/comp/parser.y"
  2430. { yyval.defnamespace_constituent = yypvt[-1].defnamespace_constituent; free(yypvt[-0].token); } break;
  2431. case 257:
  2432. # line 1013 "../../mindy-1.x/comp/parser.y"
  2433. { yyval.defnamespace_constituent = add_use_clause(make_define_module(), yypvt[-0].use_clause); } break;
  2434. case 258:
  2435. # line 1015 "../../mindy-1.x/comp/parser.y"
  2436. { yyval.defnamespace_constituent = add_exports(make_define_module(), yypvt[-0].variable_names); } break;
  2437. case 259:
  2438. # line 1017 "../../mindy-1.x/comp/parser.y"
  2439. { yyval.defnamespace_constituent = add_creates(make_define_module(), yypvt[-0].variable_names); } break;
  2440. case 260:
  2441. # line 1019 "../../mindy-1.x/comp/parser.y"
  2442. { yyval.defnamespace_constituent = add_use_clause(yypvt[-2].defnamespace_constituent, yypvt[-0].use_clause); free(yypvt[-1].token); } break;
  2443. case 261:
  2444. # line 1021 "../../mindy-1.x/comp/parser.y"
  2445. { yyval.defnamespace_constituent = add_exports(yypvt[-2].defnamespace_constituent, yypvt[-0].variable_names); free(yypvt[-1].token); } break;
  2446. case 262:
  2447. # line 1023 "../../mindy-1.x/comp/parser.y"
  2448. { yyval.defnamespace_constituent = add_creates(yypvt[-2].defnamespace_constituent, yypvt[-0].variable_names); free(yypvt[-1].token); } break;
  2449. case 263:
  2450. # line 1027 "../../mindy-1.x/comp/parser.y"
  2451. { free(yypvt[-1].token); yyval.variable_names = yypvt[-0].variable_names; } break;
  2452. case 264:
  2453. # line 1031 "../../mindy-1.x/comp/parser.y"
  2454. { free(yypvt[-1].token); yyval.variable_names = yypvt[-0].variable_names; } break;
  2455. case 265:
  2456. # line 1036 "../../mindy-1.x/comp/parser.y"
  2457. { free(yypvt[-2].token); yyval.use_clause = make_use_clause(yypvt[-1].token, yypvt[-0].use_options); } break;
  2458. case 266:
  2459. # line 1040 "../../mindy-1.x/comp/parser.y"
  2460. { yyval.use_options = make_use_options(); } break;
  2461. case 267:
  2462. # line 1042 "../../mindy-1.x/comp/parser.y"
  2463. { free(yypvt[-1].token); yyval.use_options = add_use_option(yypvt[-2].use_options, yypvt[-0].use_option); } break;
  2464. case 273:
  2465. # line 1055 "../../mindy-1.x/comp/parser.y"
  2466. { yyval.use_option = make_prefix_option(yypvt[-0].token); free(yypvt[-1].token); } break;
  2467. case 274:
  2468. # line 1060 "../../mindy-1.x/comp/parser.y"
  2469. { yyval.use_option = make_use_option(useopt_IMPORT_ALL); free(yypvt[-1].token); free(yypvt[-0].token); } break;
  2470. case 275:
  2471. # line 1062 "../../mindy-1.x/comp/parser.y"
  2472. { yyval.use_option = (struct use_option *) yypvt[-1].import_option; free(yypvt[-3].token); free(yypvt[-2].token); free(yypvt[-0].token); } break;
  2473. case 276:
  2474. # line 1066 "../../mindy-1.x/comp/parser.y"
  2475. { yyval.import_option = make_import_option(); } break;
  2476. case 277:
  2477. # line 1067 "../../mindy-1.x/comp/parser.y"
  2478. { yyval.import_option = yypvt[-0].import_option; } break;
  2479. case 278:
  2480. # line 1072 "../../mindy-1.x/comp/parser.y"
  2481. { yyval.import_option = add_import(make_import_option(), yypvt[-0].token, NULL); } break;
  2482. case 279:
  2483. # line 1074 "../../mindy-1.x/comp/parser.y"
  2484. { yyval.import_option = add_import(make_import_option(), yypvt[-2].token, yypvt[-0].token); free(yypvt[-1].token); } break;
  2485. case 280:
  2486. # line 1076 "../../mindy-1.x/comp/parser.y"
  2487. { yyval.import_option = add_import(yypvt[-2].import_option, yypvt[-0].token, NULL); free(yypvt[-1].token); } break;
  2488. case 281:
  2489. # line 1078 "../../mindy-1.x/comp/parser.y"
  2490. { yyval.import_option = add_import(yypvt[-4].import_option, yypvt[-2].token, yypvt[-0].token); free(yypvt[-3].token); free(yypvt[-1].token); } break;
  2491. case 282:
  2492. # line 1083 "../../mindy-1.x/comp/parser.y"
  2493. { yyval.use_option = make_exclude_option(yypvt[-0].variable_names); free(yypvt[-1].token); } break;
  2494. case 283:
  2495. # line 1088 "../../mindy-1.x/comp/parser.y"
  2496. { yyval.use_option = make_use_option(useopt_EXPORT_ALL); free(yypvt[-1].token); free(yypvt[-0].token); } break;
  2497. case 284:
  2498. # line 1090 "../../mindy-1.x/comp/parser.y"
  2499. { yyval.use_option = make_export_option(yypvt[-0].variable_names); free(yypvt[-1].token); } break;
  2500. case 285:
  2501. # line 1095 "../../mindy-1.x/comp/parser.y"
  2502. { yyval.use_option = make_rename_option(make_renamings());
  2503.       free(yypvt[-2].token); free(yypvt[-1].token); free(yypvt[-0].token); } break;
  2504. case 286:
  2505. # line 1098 "../../mindy-1.x/comp/parser.y"
  2506. { yyval.use_option = make_rename_option(yypvt[-1].renamings); free(yypvt[-3].token); free(yypvt[-2].token); free(yypvt[-0].token); } break;
  2507. case 287:
  2508. # line 1103 "../../mindy-1.x/comp/parser.y"
  2509. { yyval.renamings = add_renaming(make_renamings(), yypvt[-2].token, yypvt[-0].token); free(yypvt[-1].token); } break;
  2510. case 288:
  2511. # line 1105 "../../mindy-1.x/comp/parser.y"
  2512. { yyval.renamings = add_renaming(yypvt[-4].renamings, yypvt[-2].token, yypvt[-0].token); free(yypvt[-3].token); free(yypvt[-1].token); } break;
  2513. case 289:
  2514. # line 1109 "../../mindy-1.x/comp/parser.y"
  2515. { yyval.variable_names = make_variable_names(); free(yypvt[-1].token); free(yypvt[-0].token); } break;
  2516. case 290:
  2517. # line 1111 "../../mindy-1.x/comp/parser.y"
  2518. { yyval.variable_names = yypvt[-1].variable_names; free(yypvt[-2].token); free(yypvt[-0].token); } break;
  2519. case 291:
  2520. # line 1115 "../../mindy-1.x/comp/parser.y"
  2521. { yyval.variable_names = add_variable_name(make_variable_names(), yypvt[-0].token); } break;
  2522. case 292:
  2523. # line 1117 "../../mindy-1.x/comp/parser.y"
  2524. { yyval.variable_names = add_variable_name(yypvt[-2].variable_names, yypvt[-0].token); free(yypvt[-1].token); } break;
  2525. case 293:
  2526. # line 1122 "../../mindy-1.x/comp/parser.y"
  2527. { if (yypvt[-0].token) {
  2528.           if (strcasecmp((char *)yypvt[-4].token->chars, (char *)yypvt[-0].token->chars) != 0) {
  2529.           error(yypvt[-0].token->line, "mismatched name, ``%s'' isn't ``%s''",
  2530.             yypvt[-0].token->chars, yypvt[-4].token->chars);
  2531.           yacc_recover();
  2532.           }
  2533.           free(yypvt[-0].token);
  2534.       } 
  2535.       free(yypvt[-2].token);
  2536.       yyval.constituent = (struct constituent *) set_namespace_name(yypvt[-3].defnamespace_constituent, yypvt[-4].token);
  2537.     } break;
  2538. case 294:
  2539. # line 1136 "../../mindy-1.x/comp/parser.y"
  2540. { yyval.nothing = NULL; } break;
  2541. case 295:
  2542. # line 1137 "../../mindy-1.x/comp/parser.y"
  2543. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2544. case 296:
  2545. # line 1140 "../../mindy-1.x/comp/parser.y"
  2546. { yyval.defnamespace_constituent = make_define_library(); } break;
  2547. case 298:
  2548. # line 1142 "../../mindy-1.x/comp/parser.y"
  2549. { yyval.defnamespace_constituent = yypvt[-1].defnamespace_constituent; free(yypvt[-0].token); } break;
  2550. case 299:
  2551. # line 1147 "../../mindy-1.x/comp/parser.y"
  2552. { yyval.defnamespace_constituent = add_use_clause(make_define_library(), yypvt[-0].use_clause); } break;
  2553. case 300:
  2554. # line 1149 "../../mindy-1.x/comp/parser.y"
  2555. { yyval.defnamespace_constituent = add_exports(make_define_library(), yypvt[-0].variable_names); } break;
  2556. case 301:
  2557. # line 1151 "../../mindy-1.x/comp/parser.y"
  2558. { yyval.defnamespace_constituent = add_use_clause(yypvt[-2].defnamespace_constituent, yypvt[-0].use_clause); free(yypvt[-1].token); } break;
  2559. case 302:
  2560. # line 1153 "../../mindy-1.x/comp/parser.y"
  2561. { yyval.defnamespace_constituent = add_exports(yypvt[-2].defnamespace_constituent, yypvt[-0].variable_names); free(yypvt[-1].token); } break;
  2562. case 303:
  2563. # line 1157 "../../mindy-1.x/comp/parser.y"
  2564. { yyval.nothing = NULL; } break;
  2565. case 304:
  2566. # line 1157 "../../mindy-1.x/comp/parser.y"
  2567. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2568. case 305:
  2569. # line 1158 "../../mindy-1.x/comp/parser.y"
  2570. { yyval.nothing = NULL; } break;
  2571. case 306:
  2572. # line 1158 "../../mindy-1.x/comp/parser.y"
  2573. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2574. case 307:
  2575. # line 1159 "../../mindy-1.x/comp/parser.y"
  2576. { yyval.nothing = NULL; } break;
  2577. case 308:
  2578. # line 1159 "../../mindy-1.x/comp/parser.y"
  2579. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2580. case 309:
  2581. # line 1160 "../../mindy-1.x/comp/parser.y"
  2582. { yyval.nothing = NULL; } break;
  2583. case 310:
  2584. # line 1160 "../../mindy-1.x/comp/parser.y"
  2585. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2586. case 311:
  2587. # line 1161 "../../mindy-1.x/comp/parser.y"
  2588. { yyval.nothing = NULL; } break;
  2589. case 312:
  2590. # line 1161 "../../mindy-1.x/comp/parser.y"
  2591. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2592. case 313:
  2593. # line 1162 "../../mindy-1.x/comp/parser.y"
  2594. { yyval.nothing = NULL; } break;
  2595. case 314:
  2596. # line 1162 "../../mindy-1.x/comp/parser.y"
  2597. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2598. case 315:
  2599. # line 1163 "../../mindy-1.x/comp/parser.y"
  2600. { yyval.nothing = NULL; } break;
  2601. case 316:
  2602. # line 1163 "../../mindy-1.x/comp/parser.y"
  2603. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2604. case 317:
  2605. # line 1164 "../../mindy-1.x/comp/parser.y"
  2606. { yyval.nothing = NULL; } break;
  2607. case 318:
  2608. # line 1164 "../../mindy-1.x/comp/parser.y"
  2609. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2610. case 319:
  2611. # line 1165 "../../mindy-1.x/comp/parser.y"
  2612. { yyval.nothing = NULL; } break;
  2613. case 320:
  2614. # line 1165 "../../mindy-1.x/comp/parser.y"
  2615. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2616. case 321:
  2617. # line 1166 "../../mindy-1.x/comp/parser.y"
  2618. { yyval.nothing = NULL; } break;
  2619. case 322:
  2620. # line 1166 "../../mindy-1.x/comp/parser.y"
  2621. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2622. case 323:
  2623. # line 1167 "../../mindy-1.x/comp/parser.y"
  2624. { yyval.nothing = NULL; } break;
  2625. case 324:
  2626. # line 1167 "../../mindy-1.x/comp/parser.y"
  2627. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2628. case 325:
  2629. # line 1168 "../../mindy-1.x/comp/parser.y"
  2630. { yyval.nothing = NULL; } break;
  2631. case 326:
  2632. # line 1168 "../../mindy-1.x/comp/parser.y"
  2633. { free(yypvt[-0].token); yyval.nothing = NULL; } break;
  2634. case 327:
  2635. # line 1170 "../../mindy-1.x/comp/parser.y"
  2636. { yyval.token = NULL; } break;
  2637. case 328:
  2638. # line 1170 "../../mindy-1.x/comp/parser.y"
  2639. { yyval.token = yypvt[-0].token; } break;
  2640. case 329:
  2641. # line 1171 "../../mindy-1.x/comp/parser.y"
  2642. { yyval.expr = NULL; } break;
  2643. case 330:
  2644. # line 1171 "../../mindy-1.x/comp/parser.y"
  2645. { yyval.expr = yypvt[-0].expr; } break;
  2646. case 331:
  2647. # line 1172 "../../mindy-1.x/comp/parser.y"
  2648. { yyval.else_part = NULL; } break;
  2649. case 332:
  2650. # line 1172 "../../mindy-1.x/comp/parser.y"
  2651. { yyval.else_part = yypvt[-0].else_part; } break;
  2652. case 333:
  2653. # line 1173 "../../mindy-1.x/comp/parser.y"
  2654. { yyval.body = NULL; } break;
  2655. case 334:
  2656. # line 1173 "../../mindy-1.x/comp/parser.y"
  2657. { yyval.body = yypvt[-0].body; } break;
  2658.     }
  2659.     goto yystack;        /* reset registers in driver code */
  2660. }
  2661.  
  2662. # ifdef __RUNTIME_YYMAXDEPTH
  2663.  
  2664. static int allocate_stacks() {
  2665.     /* allocate the yys and yyv stacks */
  2666.     yys = (int *) malloc(yymaxdepth * sizeof(int));
  2667.     yyv = (YYSTYPE *) malloc(yymaxdepth * sizeof(YYSTYPE));
  2668.  
  2669.     if (yys==0 || yyv==0) {
  2670.        yyerror( (nl_msg(30004,"unable to allocate space for yacc stacks")) );
  2671.        return(1);
  2672.        }
  2673.     else return(0);
  2674.  
  2675. }
  2676.  
  2677.  
  2678. static void free_stacks() {
  2679.     if (yys!=0) free((char *) yys);
  2680.     if (yyv!=0) free((char *) yyv);
  2681. }
  2682.  
  2683. # endif  /* defined(__RUNTIME_YYMAXDEPTH) */
  2684.  
  2685.